使用 vim
vim [OPTION]... FILE...
如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它
+# 打开文件后,让光标处于第#行的行首,+默认行尾
三种主要模式和转换
1. 命令模式(或普通模式)
①退出VIM
②光标跳转
h: 左 L: 右 j: 下 k: 上
#COMMAND:跳转由#指定的个数的字符
单词间跳转
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转
行首行尾跳转
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
#G 跳转至由第#行,相当于在扩展命令模式下 :# …——G 最后一行 ——1G, gg 第一行
) 下一句 ( 上一句
} 下一段 { 上一段
命令模式翻屏操作
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
③字符编辑
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
- 替换命令:
r 只替换光标所在处的一个字符
R 切换成REPLACE模式(在末行出现— REPLACE — 提示),按ESC回到命令模式
- 删除命令(delete)→剪切
d$ 删除到行尾 dw
d^ 删除到非空行首 de
d0 删除到行首 db
#COMMAND
dd 剪切光标所在的行 #dd 多行删除
D 从当前光标位置一直删除到行尾,等同于d$(空行会保留)
- 复制命令(yank)
y$ 行尾 yw 下一个单词的词首
y0 行首 ye 当前或下一单词的词尾
y^ 非空行首 yb 当前或前一个单词的词首
#COMMAND
yy 复制行 #yy 复制多行
Y 复制整行,相当于yy
- 粘贴命令(paste)
p 光标所在行的下方、后面
P 光标所在行的上方、前面
- 改变命令(change)——删除后切换成插入模式
c\$ 行尾 cw 下一个单词的词首
c0 行首 ce 当前或下一单词的词尾
c^ 非空行首 cb 当前或前一个单词的词首
#COMMAND
cc 删除当前行并输入新内容,相当于S #cc 删除多行
C 删除当前光标到行尾,并切换成插入模式,相当于c$
④查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
2. 插入(Insert)-编辑模式
3. 扩展命令模式(或末行模式)
①地址定界
:start_pos,end_pos CMD
# 具体第#行,例如2表示第2行 #,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
. 当前行 $ 最后一行
.,$-1 当前行到倒数第二行 % 全文, 相当于1,$
/pattern/ 从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/ 从指定行开始,一直找到第一个匹配patttern的行结束
/pat/,$ 向下找到第一个匹配patttern的行到整个文件的结尾的所有行
#地址定界后跟一个编辑命令
d #删除 y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容
②查找并替换
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用基末正则表达式模式
替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:i #忽略大小写; g #全局替换,默认情况下,每一行只替换第一次出现; gc #全局替换,每次替换前询问
(查找替换中的分隔符/可替换为其它字符,如:#,@ )