VIM 编辑器的使用
欢迎来到 来到大浪涛天的博客 !
VIM 编辑器的使用
1. vim:模式化的编辑
2. 基本模式:
-
编辑模式
-
命令模式
-
输入模式
-
末行模式:
-
内置的命令行接口
3. 模式转换:
3.1 编辑模式 --> 输入模式
- i: insert, 在光标所在处输入;
- a: append, 在光标所在处后面输入;
- o: 在当前光标所在行的下方打开一个新行;
- I:在当前光标所在行的行首输入;
- A:在当前光标所在行的行尾输入;
- O:在当前光标所在行的上方打开一个新行;
3.2 输入模式 --> 编辑模式
- ESC
3.3 关闭文件:
- :q 退出
- :q! 强制退出,丢弃做出的修改;
- :wq 保存退出
- :x 保存退出
- :w /PATH/TO/SOMEWHERE
- ZZ: 保存退出;
4. 打开文件:
vim [OPTION]... FILE...
+#: 打开文件后,直接让光标处于第#行的行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
vim +/^fi /tmp/grub2.cfg
5. 字符跳转:
- 字符间跳转:
h(左), j(下), k(上), l(右)
COMMAND:跳转由#指定的个数的字符;注意是先按数字再按向哪个方向跳转的方向键来完成。 - 单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
COMMAND:由#指定一次跳转的单词数 - 行首行尾跳转:
^: 跳转至行首的第一个非空白字符;
0: 跳转至行首;
$: 跳转至行尾; - 行间移动:
#G:跳转至由#指定行;
G:最后一行;
1G, gg: 第一行;
6. vi 编辑命令
字符编辑:
- x: 删除光标处的字符;
#x: 删除光标处起始的#个字符;
xp: 交换光标所在处的字符及其后面字符的位置; - 替换命令(r, replace)
r: 替换光标所在处的字符 - 删除命令
d: 删除命令,可结合光标跳转字符,实现范围删除;
d$: 删除光标到行尾的所有字符
d^: 删除光标到行首(行首第一个非空白字符)的所有字符
d0: 删除光标到行首的所有字符
dw:删除光标都下一个单词的词首
de:删除到下一个单词的词尾
db:删除到上一个单词的词首
#COMMAND
dd: 删除光标所在的行;
#dd:多行删除;
- 粘贴命令(p, put, paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面;
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面; - 复制命令(y, yank):
y: 复制,工作行为相似于d命令;
y$ :复制内容到行尾
y0:复制内容到行首
y^:复制内容到行首
ye:复制内容到下一个单词的词尾
yw:复制到下一个单词
yb:复制到下一个单词
#COMMAND
yy:复制行
#yy: 复制多行;
- 改变命令(c, change)
c: 修改 - 编辑模式 --> 输入模式
c$: 删除光标到词尾内容并转为输入模式
c^:删除光标到词首(非空白字符)的内容并转为输入模式
c0:删除光标到词首的内容并转为输入模式
cb:删除光标到上一个单词的词首并转为输入模式
ce:删除到下一个单词的词尾并转为输入模式
cw:删除到下一个单词的词首并转为输入模式
#COMMAND
cc:删除并输入新内容
#cc:
- 可视化模式:
v: 按字符选定
V:按行行定
Note:经常结合编辑命令;
d, c, y
撤消此前的编辑:
u(undo):撤消此前的操作;
#u: 撤消指定次数的操作;10u撤销前 10步的操作
.:重复此前的操作
撤消此前的撤消:
Ctrl+r
重复前一个编辑操作:. - 翻屏操作:
Ctrl+f: 向文件尾部翻一屏;
Ctrl+b: 向文件首部翻一屏;
Ctrl+d: 向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏; - vim中的末行模式,内建的命令行接口
1 . 地址定界
:start_pos,end_pos
#: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾;后可以直接加命令(y,d,p,r插入),不要加空格,表示选定的行用该命令进行处理
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数;
.: 当前行
$: 最后一行
.,$-1
%:全文, 相当于1,$
/pat1/,/pat2/:
从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束;
(数字),/pat/
/pat/,$
pat为标准的正则表达式
使用方式:
后跟一个编辑命令
d 删除
y 复制
w /PATH/TO/SOMEWHERE: 将范围内的行另存至指定文件中;
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;
- 查找
/PATTERN:从当前光标所在处向文件尾部查找;
例如 /<r..t>
?PATTERN:从当前光标所在处向文件首部查找;
n:与命令同方向;
N:与命令反方向; - 查找并替换
s: 在末行模式下完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容;
eg :.,$s/root/ROOT/g
eg 1,$s/R(..)T/r1t/g
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现;
&:可以引用前面匹配到的所有内容
eg %s/l...x/&er/g
查找替换中的分隔符/可替换为其它字符,例如
s@@@
eg %s//etc//var/g
还可以这样 %s#/etc#/var#g