Vim基本命令

来源:互联网 发布:h3c 怎么修改端口23 编辑:程序博客网 时间:2024/05/16 23:39

看了些资料,就此总结一下Vim最常用的基本命令。

1切换编辑模式:
一般模式下
a                                (小写)光标之后进行插入
A                                (大写)光标所在行尾进行插入
i                                 (小写)光标前开始进行插入
I                                 (大写)光标所在行首进行插入
o                                (小写)光标所在行后新插入一空行进行插入
O                               (大写)光标所在行前新插入一空行进行插入
编辑模式下按ESC键返回一般模式


2 切换到命令模式
一般模式下按【:】进入命令模式,键入命令回车后自动返回到一般模式或按ESC键返回到一般模式。


3 保存文件
命令模式下
:w                                (小写)保存文件
​:wq                              (小写)保存并退出vim
:w 文件名1                  将文件另存为文件名1
:ZZ                               (大写)保存文件并退出,若无改动则不保存离开
:wq!                             (小写)文件所有者强制保存只读文件,如果不是文件所有者进行此操作,不能成功
:q!                                退出不保存文件


4 复制(yank) 
一般模式下
yy或 Y                          复制光标所在整行
y^                                复制到光标所在行行首,不包括光标位置字符
y$                                复制到光标所在行行尾,包括光标位置字符
y0                                与y^效果效果相同
yw                               复制一个单词,光标必须在单词首部

yG                               复制到文件尾
ygg/y1G                     复制到文件首
nyy                             复制光标所在行开始的n行

:n1,n2y                        命令模式下,复制n1-n2行


5 粘贴
一般模式下
p                                  (小写)粘贴到光标后
P                                  (大写)粘贴到光标前


6 删除
一般模式下
x                                   (小写)删除光标前一个字符
X                                  (大写)删除光标后一个字符
dd                                (小写)删除光标所在整行
dw                                (小写)删除光标所在处一个单词
dG                                删除光标所在整行到文件尾
dgg/d1G                     删除光标所在整行到文件首
D                                  (大写)删除到行尾,包含光标处的字符
d$                                与D效果相同
d0                                删除到行首,不包含光标处的字符
d^                                与d0效果相同
:n1,n2d                        命令模式下,删除n1-n2行


7撤销
一般模式下
u                                   (小写)无限次保存前撤销(大概500多次)
ctrl+r                            redo

:e!                                  恢复成文件未保存时状态


8 字符替换
一般模式下
r                                    (小写)替换光标所在处一个字符
R                                   (大写)开始替换,直到按ESC键退出替换,相当于按下键盘上到insert键
cc                                  (小写)取代光标所在整行
s                                   (小写)删除光标所在字符后再插入
S                                   (大写)删除整行后再插入,与cc效果相同

C                                   (大写)取代到行尾,包括光标处字符
c0                                 (小写,数字0)取代到行首,不包括光标处字符
c^                                 (小写)与c0(小写,数字0)效果相同


9 字符串查找和替换
一般模式下
/string                               从光标处开始向下开始查找字符串string
/查找模式下按n(小写)查找下一个,按N(大写)查找上一个
?string                               从光标处开始向上开始查找字符从string
?查找模式下按n(小写)查找上一个,按N(大写)查找下一个
*                                         向下完整匹配光标下的单词
#                                        向上完整匹配光标下的单词
g*                                      向下部分匹配光标下的单词
g#                                      向上部分匹配光标下到单词
命令模式下
:set ic                                 查找时,忽略大小写
:set noic                            取消查找时忽略大小写
:f string                             (小写f与string有空格)搜索一行中匹配到的string
:%s/old/new/g                 全文将old替换为new,不提示
:%s/old/new/c                  全文将old替换为new,提示是否替换
:n1,n2s/old/new/g           n1-n2行中,将old替换为new,不提示
:n1,n2s/old/new/c            n1-n2行中,将old替换为new,提示是否替换
在替换文本old或new中有/字符时,需要用\进行转义


10 显示行号
命令模式下
:set nu(mber)                     显示行号
:set nonu                            取消显示行号
:set nu!                               取消显示行号


11 简单排版
命令模式下
:ce(nter)                             居中显示光标所在行
:ri(ght)                               靠右显示光标所在行
:le(ft)                                  靠左显示光标所在行
一般模式下
J                                         将光标所在下一行合并到光标所在行
>>                                     光标所在行增加缩进(一个tab)
<<                                     光标所在行减少缩进(一个tab)
n>>                                   光标所在行开始的n行增加缩进
n<<                                   光标所在行开始的n行减少缩进


12 书签
一般模式下
mx 设定书签,x是任意一个字母,通常小写(a-z),x为小写字母时,局限在一个文件之间切换;大写字母时,可在文件之间切换.
`x                                      (`位于数字键1旁边)跳转到书签x
命令模式下
:marks                              查看标签


13 光标移动方式
一般模式下
H                                       (大写,Head)移动到屏幕顶第一个非空白字符
M                                      (大写,Mid)移动到屏幕中间第一个非空白字符
L                                        (大写,Last)移动到屏幕底部第一个非空白字符
(                                        (左小括号)移动到上一个句子首
)                                        (右小括号)移动到下一个句子首
{                                        (左大括号)移动到上一个段落首
}                                        (右大括号)移动到下一个段落首
%                                       光标跳转到匹配到括号处,支持{}()
[[                                        光标跳转到代码块开头即{处,要求{独占一行
gD                                    光标跳转到局部变量定义处
''                                       (两个单引号)光标跳转到上次停靠处
h                                       (小写)光标左移一个字符,相当于左方向键
l                                        (小写)光标右移一个字符,相当于右方向键
k                                       (小写)光标垂直上移一行,相当于上方向键
j                                        (小写)光标垂直下移一行,相当于下方向键
ctrl+f                                (forword)向下整页翻页
ctrl+b                               (backward)向上整页翻页
ctrl+u                               (up)向上翻半页
ctrl+d                               (down)向下翻半页
zz                                      (小写)让光标所在行居于屏幕中央
zt                                      (小写)让光标所在行居于屏幕最顶部
zb                                     (小写)让光标所在行居于屏幕底部
命令模式下
:n                                       指定移动到第n行


14 数字前缀与重复
一般模式下
将数字加在命令前,标示该命令处理几次,如5dd标示执行5次dd(删除光标所在整行)操作。
.        (英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。


15 浏览目录
命令模式下
:e 目录                               列出指定目录下的文件和目录


16 vim技巧
技巧1 导入文件或shell命令执行结果
命令模式下
:r 文件名1                          将文件1内容引入到本文件中
:!shell命令                         在vim中执行shell命令,执行完后按回车会到vim界面
:r !shell命令                       (r与!之间有空格)将shell命令执行的结果导入到本文件中
技巧2 自定义快捷键操作
命令模式下
:map ^x 命令                    (map与^之间、x与命令之间有空格,此处到^并非键盘上的^,而表示ctrl键,后面到x为任意字母)按下ctrl+x后会执行对应到命令
例:
:map ^p I#<ESC> 当按下ctrl+p快捷组合键时,在光标所在行行首添加一个#号,并回到命令模式
技巧3 连续行注释
命令模式下
:n1,n2/^/#/g                    (#号为注释符号,在shell中注释符号为#,C++中为//)
:n1,n2/^/\/\//g                C++源文件多行连续注释
技巧4 替换
:ab string1 string2           在vim中输入string1按空格或回车后,string1会自动替换为string2
:unab string1                    取消string1的替换

其他技巧
:w[filename]                       将编辑的数据保存成另一个文件(类似另存文件)
:n1,n2w [filename]            将 n1 到 n2 的内容保存成 filename 这个文件。
:!command                        暂时离开 vi 到指令列模式下执行 command 的显示结果!
vim配置文件
~/.vimrc
可将命令模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令。


原创粉丝点击