VIM常见命令总结
三种基本模式
VIM常用模式有4中:Normal Mode、Insert mode、Visaul Mode和Command-line Mode.
1.Normal Mode -> Insert Mode
i 在光标位置插入
a 在光标的前插入
I 在光标所在行第一个飞空格字符处插入
A 在光标搜在行的最后一个字符处插入
o 在光标所在行的上一行出插入
O 在光标所在行的上一行出插入
r 替换光标处的字符
R 持续替换光标处的字符,直到按下ESC
2.Normal Mode -> Command-line Mode
:w 写入文件
:q 退出VIM
:wq! 强制写入退出
:w filename 另存为filename
:n1,n2 filename 将n1行到n2行的数据另存为filename
:x 文件更改,则保持退出;无更改,直接退出
/ <word> 光标处向下搜索关键字
? <word> 光标处向上搜索关键字
3.Insert Mode -> Normal Mode
ESC
4.Insert Mode -> Visaul Mode
v
V
Ctrl+v
常见光标移动按键
1.光标字符操作
j向下
k向上
h向左
i向右
$光标移动到行尾
o光标移动到行首
^光标移动到行首第一个非空白字符
2.光标词操作
w光标移动到后一个词首
W光标移动到后一个词首忽略标点符号
e光标移动到后一个词的词尾
E光标移动到后一个词的词尾忽略标志符号
b光标移动到前一个词首
B光标移动到前一个词的词首忽略标点符号
3.光标句操作
)光标移动到后一句的句首
(光标移动到前一句的句首
%配合(和)使用,寻找相匹配的另一半
4.光标行操作
G 光标移动到文档的最后一行的第一个非空白字符
nG 光标移动到文档的第n行,相当于”:n”
gg 光标移动到文档的第1行的第一个非空白字符,相当于”1G”,也相当于”:1″
<N> 光标向下移动N行
5.光标段操作
} 光标移动到下一段的段首
{ 光标移动到上一段的段首
% 配合“(”和“)”使用,寻找相匹配的另一半
6.光标页操作
Ctrl+f 向下翻页(Pagedown)
Ctrl+b 向上翻页(Pageup)
Ctrl+d 向下翻半页
Ctrl+u 向上翻半页
H 光标移动到目前显示页的第一行
M 光标移动到目前显示页的中间行
L 光标移动到目前显示页的最后一行
7.光标自由操作
Ctrl+o 回到光标的上一位置
常用编辑操作按键
1.删除操作(delete)
dd 删除光标所在行
ndd 删除从光标所在行开始,向下的n行
d1G 删除从光标所在行开始,到第一行的所有行
dG 删除从光标所在行开始,到最后一行的所有行
d$ 删除从光标所在位置,到行尾的所有字符
d0 删除从光标所在位置,到行首的所有字符
2.复制操作(yank)
yy 复制光标所在行
nyy 复制从光标所在行开始,向下的n行
y1G 复制从光标所在行开始,到第一行的所有行
yG 复制从光标所在行开始,到最后一行的所有行
y$ 复制从光标所在位置,到行尾的所有字符
y0 复制从光标所在位置,到行首的所有字符
3.粘贴操作(paste)
p 小写字母p,粘贴剪贴板中的数据,从光标所在行的下一行开始
P 大写字母P,粘贴剪贴板中的数据,从光标所在行的上一行开始
4.撤销与重做操作(undo,redo)
u (Undo)撤销上一个操作
Ctrl+r (Redo)重做上一个操作
5.重复操作
. 重复上一操作
6.替换操作(replace)
r 替换光标所在处字符
R 进入替换模式,直至按ESC退出
cc 替换光标所在行
cw 替换光标所在的英文单词
~ 转换大小写
7.排版操作
:le<ft> 光标所在行左对齐
:ri<ght> 光标所在行右对齐
:ce<nter> 光标所在行居中
常用多缓冲区操作按键
1.多文件编辑模式
- argument list模式,就是在打开vim编辑器时,携带多个文件路径参数。
- buffer list模式,就是在进入vim编辑器后,打开多个缓冲区进行编辑。
2.单一缓冲区打开多个文件
:files 显示目前打开了哪些文件
:n 切换到下一个缓冲区内容
:N 切换到上一个缓冲区内容
:2n 切换到下下个缓冲区内容
:bn 下一个缓冲区内容(buffer next)
:bp 上一个缓冲区内容(buffer previous)
3.多个缓冲区打开多个文件
:sp [filename] 打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件
Ctrl+w n 新建一个缓冲区
Ctrl+w q 退出光标所在的缓冲区
Ctrl+w j 光标移动到下一缓冲区
Ctrl+w k 光标移动到上一缓冲区
Ctrl+w l 光标移动到右一缓冲区
Ctrl+w h 光标移动到左一缓冲区
Ctrl+w v 左右切割窗口新建缓冲区
Ctrl+w s 上下切割窗口新建缓冲区
Ctrl+w o 使光标所在缓冲区最大化,其他缓冲区隐藏
常见分屏
1.终端中分屏打开多个文件
vim -on filename1 filename2 水平分屏
vim -On filename1 filename2 垂直分屏
2.VIM中命令行分屏
:sp 水平分屏
:vsp 垂直分屏
3.分屏之间命令
ctrl+w<dir> dir为方向hjkl后 ←↓↑→
ctrl+w<+>或<-> 增加分屏大小
ctrl+w_或ctrl+w| 最大化尺寸(<C-w>| 垂直分屏)
常用搜索与书签操作快捷键
-
搜索字符串
/string 向下搜索字符串“string” ?string 向上搜索字符串“string” -
重复上次搜索
n 根据上次搜索条件找到下一个匹配的字符串 N 根据上次搜索条件找到上一个匹配的字符串 -
搜索单词
* 向下搜索光标所在处的单词(完全匹配) # 向上搜索光标所在处的单词(完全匹配) g* 向下搜索光标所在处的单词(部分匹配) g# 向上搜索光标所在处的单词(部分匹配) -
标记书签(mark)
ma a为小写字母,为光标所在处设定文档书签a mA A为大写字母,为光标所在处设定全局书签A -
使用书签(mark)
`a 到文档书签a处,Tab键上方 'a 到文档书签a所在行行首处,Enter键左边 `A 到全局书签A处,Tab键上方 'A 到全局书签A所在行行首处,Enter键左边 `n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置,1-9以此类推 'n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置所在行的行首,1-9以此类推 -
查看书签列表
:marks 查看当前所有书签
关于VIM加密
1.加密文件
vim -x filename
Vim提示出入密码:
Enter entryption key:****
Enter same key again:****
当打开filename时:
Need encryption key for "main.cpp"
Enter encryption key:****
2.解除加密与重设密码
打开你已经加密的文件,然后输入:
:set key=
这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:
:X
注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:
Enter entryption key: *****
Enter sanme key again: *****
VIM替换技巧
1.简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词
:%s/one/1/g 将one替换为1
如果替换“thirtyfour”中的four为4
:%s/<four/4/g
如果是像”fourty”中替换
:%s<four>/4/g
如果需要之对注释中替换
:%s<four>/4/gc
2.删除多余空格
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/s+$//
命令前面指明范围是“%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是“s+$”。这表示行末($)前的一个或者多个(+)空格(s)。替换命令的“to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
3.匹配重复性模式
星号项“*”规定在它前面的项可以重复任意次。因此:
/a*
匹配“a”,”aa”,”aaa”,等等。但也匹配“” (空字串),因为零次也包含在内。星号“” 仅仅应用于那个紧邻在它前面的项。因此“ab” 匹配“a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加“(”,后面加“)”。因此这个命令:
/(ab)*
匹配:“ab”,”abab”,”ababab”,等等。而且也匹配“”。
要避免匹配空字串,使用“+”。这表示前面一项可以被匹配一次或多次。
/ab+
匹配“ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随“b” 的“a”。
要匹配一个可选项,用“=”。 例如:
/folders=
匹配“folder” 和“folders”。
4.指定重复次数
| 要匹配某一项的特定次数重复,使用“{n,m}” 这样的形式。其中“n” 和“m” 都是数字。在它前面的那个项将被重复“n” 到“m” 次 ( | inclusive | 包含“n” 和“m”)。例如: |
/ab{3,5}
匹配“abbb”,”abbbb” 以及“abbbbb”。
当“n” 省略时,被默认为零。当“m” 省略时,被默认为无限大。当“,m” 省略时,就表示重复正好“n” 次。例如:
模式 匹配次数 {,4} 0,1,2,3 或 4 {3,} 3,4,5,等等 {0,1} 0 或 1,同 = {0,} 0 或 更多,同 * {1,} 1 或 更多,同 + {3} 3
5.多选一匹配
| 在一个查找模式中,”或” 运算符是“ | ”。例如: |
/foo|bar
这个命令匹配了“foo” 或“bar”。更多的抉择可以连在后面:
/one|two|three
匹配“one”,”two” 或“three”。
如要匹配其多次重复,那么整个抉择结构须置于“(” 和“)” 之间:
/(foo|bar)+
这个命令匹配“foo”,”foobar”,”foofoo”,”barfoobar”,等等。
再举个例子:
/end(if|while|for)
这个命令匹配“endif”,”endwhile” 和“endfor”。