欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/39853773
vim是vi的增强版,即Vi IMproved,号称Linux下的编辑利器,用了一段时间,的确犀利。下面记录一下我的一些使用心得。
1、欲练此功,必先。。。了解几种模式啦
使用vim之前,先简单了解一下几种常用的模式,即Normal、Insert、Command、Visual,我们所有的操作都将在这几种模式下完成。正常使用vim打开文件,默认进入Normal模式;在Normal模式键入i,进入Insert模式;Normal模式键入冒号(:),进入Command模式;Normal模式下键入v,进入Visual模式。模式间切换(除了某些命令执行后会自动切换外),可按esc先进入Normal模式,再切换进入需要的模式。如下图所示:
各个模式下可完成的操作不同,只有把各个模式贯通起来,才能把vim的强大之处发挥出来。看过《武状元苏乞儿》吗?把前十七掌融会贯通,才能一气呵成地使出威力最大的第十八掌。
2、先说Normal模式下的一些操作
操作 | 效果 |
D | 从光标处删除到行末 |
y$ | 从光标处复制到行末 |
P | 粘贴至当前行上面 |
p | 粘贴至当前行下面 |
np | 粘贴n次 |
d$ | 剪切当前光标处到行尾 |
d^ | 剪切当前光标处到行首 |
dd | 剪切当前行 |
dj | 剪切当前行的上一行 |
dk | 剪切当前行的下一行 |
ndd | 剪切当前行开始往下的n行 |
dw | 剪切当前单词 |
dG | 从当前行剪切到文件尾 |
yw | 复制当前单词 |
yy | 复制当前行 |
nyy | 复制当前行开始往下的n行 |
cc | 剪切当前行,并进入Insert模式 |
ncc | 剪切n行,并进入Insert模式 |
^ | 光标跳至行首 |
$ | 光标跳至行尾 |
gg | 光标跳至文件尾 |
G | 光标跳至文件头 |
w | 以单词为单位向右移动 |
nw | 向右移动n个单词的距离 |
b | 以单词为单位向左移动 |
nb | 向左移动n个单词的距离 |
gUw | 将光标所在单词变为大写 |
guw | 将光标所在单词变为小写 |
gUU | 将光标所在行变为大写 |
M | 将光标跳至屏幕中间行 |
L | 将光标跳至屏幕底行 |
H | 将光标跳至屏幕头行 |
u | 撤销前一步操作 |
Ctrl+r | 重做前一步操作 |
h | 以字符为单位向左移动 |
l | 以字符为单位向右移动 |
k | 光标上移一行 |
j | 光标下移一行 |
o | 在当前行的下一行插入一行空行,然后进入Insert模式 |
O | 在当前行的上一行插入一行空行,然后进入Insert模式 |
% | 匹配括号移动 (比如光标停在{处,这时通过该操作可以移动到与该花括号匹配的}处,很有用的一个功能) |
* | 匹配光标当前所在的单词,移动到下一个匹配处 |
# | 匹配光标当前所在的单词,移动到上一个匹配处 |
i | 进入Insert模式 |
v | 进入Visual模式 |
: | 进入Command模式 |
/ | 进入Command模式的向上搜索 |
? | 进入Command模式的向上搜索 |
Normal模式下常用的操作以上基本都包括了,别看那么多,在实际使用过程中,每次上手几个,逐渐就熟悉了,熟能生巧嘛。而且常用的也就那么几个。
3、Insert模式没啥好说的,接下来咱就进入Command模式,这个模式好玩,列下我的常用操作
操作 | 效果 |
:w | 保存更改 |
:q | 退出 |
:q! | 强制退出,不保存更改 |
:wq | 保存更改,然后退出 |
:x | 同:wq |
:saveas <path/file> | 文件另存为 |
:sp file | 上下分割,新开一个文件(即上下分屏显示) |
:vsp file | 左右分割,新开一个文件 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:s/pattern1/pattern2/ | 将当前行中从左往右第一个匹配上pattern1模式的字符串替换为pattern2 |
:s/pattern1/pattern2/g | 将当前行中所有匹配上pattern1模式的字符串替换为pattern2 |
:n1,n2s/pattern1/pattern2/g | 将从n1行到n2行中所有匹配上pattern1模式的字符串替换为pattern2 |
:n1,n2s#pattern1#pattern2#g | 实现的功能同上一行,要点在于当模式中包含/时,可以使用#作分隔符,代替/,以避免冲突,当然也可以选用其他字符作为分隔符代替/ |
:.,n2s/pattern1/pattern2/g | 将从当前行到第n2行中所有匹配上pattern1模式的字符串替换为pattern2 |
:n1,$s/pattern1/pattern2/g | 将从n1行到结尾行中所有匹配上pattern1模式的字符串替换为pattern2 |
:n1,+2s/pattern1/pattern2/g | 将从n1行到n1+2行中所有匹配上pattern1模式的字符串替换为pattern2 |
:s/^/#/ | 在当前行的行首添加#,在编写bash脚本时,可以方便地注释多行 |
:%s/pattern1/pattern2/g | 将文件中所有匹配pattern1的字符串替换为pattern2 |
:/pattern | 光标向下搜索匹配pattern模式的字符串,n移动到下一个匹配处,N移动到上一个匹配处 |
:?pattern | 光标向上搜索匹配pattern模式的字符串,n移动到下一个匹配处,N移动到上一个匹配处 |
:5 | 光标跳到第5行 |
:+2 | 光标往下跳2行 |
:-2 | 光标往上跳2行 |
:n1,n2d | 删除n1到n2行 |
很有用,特别是替换,跳行,分屏这些。
4、Visual模式,用的不多,简要列一下
操作 | 效果 |
d | 剪切选中部分 |
D | 剪切选中行 |
v | 复制选中部分 |
c | 剪切选中部分,并进入Insert模式 |
C | 剪切选中行,并进入Insert模式 |
5、补充
操作 | 效果 |
vim -O2 file1 file2 | 同时打开2个文件,并垂直分屏 |
vim -o2 file1 file2 | 同时打开2个文件,并水平分屏 |
vim file1 file2 | 打开2个文件,:bn切换到下一个,:bf切换到上一个 |
Ctrl+w l | 切换到右屏(Normal模式下) |
Ctrl+w h | 切换到左屏 |
Ctrl+w k | 切换到上屏 |
Ctrl+wj | 切换到下屏 |
Ctrl+wL | 当前屏向右移动 |
Ctrl+w H | 当前屏向左移动 |
Ctrl+w K | 当前屏向上移动 |
Ctrl+w J | 当前屏向下移动 |
觉得不够的话,可以看下这两个链接:
大牛的:http://coolshell.cn/articles/5426.html
这个讲了个map,没用过,可以试试:http://haoxiang.org/2011/09/vim-modes-and-mappin/
要是还觉得不过瘾的话,那就请在终端命令行输入vimtutor,对着帮助文档自己撸吧。
欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/39853773