命令 | 说明 |
---|---|
:e filename |
打开新的文件并命名 |
:w |
保存文件 |
:q |
退出Vim |
:q! |
不保存退出Vim |
:x |
写入文件(如果文件有修改)并退出 |
:sav filename |
另存文件并命名 |
. |
重复上一次在normal模式中的改变(例如normal模式中增加了几个字,在其他行中用. 命令,同样可以增加;在命令行模式中执行命令,用. 同样可以使用) |
5. |
5次重复上一次在normal模式中的改变 |
shift+A |
移动到当前行尾 |
shift+^ |
移动到当前行首(也可以使用0 移动到行首) |
u |
撤销 |
ctrl+r |
恢复撤销 |
命令 | 说明 |
---|---|
k or Up Arrow |
移动光标向上一行 |
j or Down Arrow |
移动光标向下一行 |
e |
移动光标到word末 |
b |
移动光标到word首 |
0 |
移动光标到行首 |
G |
移动光标到文件末 |
gg |
移动光标到文件首 |
L |
移动光标到屏幕末 |
:59 |
移动光标到59行 |
20| |
移动光标到20列 |
% |
移动光标匹配大括号 |
[[ |
移动光标到函数始 |
[{ |
移动光标到函数尾 |
命令 | 说明 |
---|---|
y |
复制选中的内容到剪切板 |
p |
粘贴剪切板内容 |
dd |
删除当前行 |
d$ |
删除当前行到行尾 |
yy |
复制当前行 |
y$ |
复制当前到行尾 |
D |
剪切当前到行尾 |
命令 | 说明 |
---|---|
/word |
从顶到底搜索word |
?word |
从底到顶搜索word |
* |
搜索光标所在的word |
/\cstring |
搜索string或者STRING,大小写敏感 |
/jo[ha]n |
搜索john或者joan |
/\<the |
搜索the,theatre或者then(以the开头),搜索的是单词 |
/the\> |
搜索the或者breathe(以the结尾),搜索的是单词 |
/\<the\> |
搜索the,搜索的是单词 |
/\/ |
搜索字符/ |
/fred\|joe |
搜索fred或者joe |
/\<\d\d\d\d\> |
搜索四个数字 |
/^\n\{3} |
搜索3个空行 |
:bufdo /searchstr |
在所有打开的文件中搜索 |
:bufdo %s/something/somethingelse/g |
在所有打开的文件中搜索并替换 |
命令 | 说明 |
---|---|
:%s/old/new/g |
替换所有出现的old为new |
:%s/old/new/g |
替换所有出现的old为new |
:%s/old/new/gi |
替换所有出现的old为new(大小写不敏感) |
:%s/old/new/gc |
替换所有出现的old为new(提示确认) |
:2,35s/old/new/g |
替换所有出现的old为new(从2行到35行) |
:5,$s/old/new/g |
替换所有出现的old为new(从5行到末行) |
:%s/^/new/g |
替换行头为new,%代表所有的行 |
:%s/$/new/g |
替换行未为new,%代表所有的行 |
:s/Bill/Steve/ |
替换当前行第一次出现的Bill为Steve,没有百分还为当前行 |
:s/Bill/Steve/g |
替换当前行出现的所有Bill为Steve,没有百分还为当前行 |
:g/string/d |
删除所有包含string的行 |
:v/string/d |
删除所有不包含string的行 |
:%s/^M//g |
删除DOS的carrage returns(^M) |
:%s/\r/\r/g |
删除DOS的carrage returns(^M) |
:%s#<[^>]\+>##g |
删除html标签保留文本 |
:%s/^.*\n\1$/\1/ |
删除出现两次的行 |
ctrl+a |
增加光标下数字大小 |
ctrl+x |
减小光标下数字大小 |
ggvGg? |
改变文本为Rot13 |
命令 | 说明 |
---|---|
Vu |
小写行 |
VU |
大写行 |
g~~ |
反转大小写 |
vEU |
将word转为大写 |
vE~ |
改变word大小写 |
ggguG |
选择所有行为小写 |
gggUG |
选择所有行尾大写 |
:set ignorecase |
设置在选择中忽略大小写 |
:set smartcase |
设置在选择中忽略大小写(如果搜索词为大写) |
:%s/\<./\u&/g |
设置每个word的首字母为大写 |
:%s/\<./\l&/g |
设置每个word的首字母为小写 |
:%s/.*/\u& |
设置每行的首字母为大写 |
:%s/.*/\l& |
设置每行的首字母为小写 |
命令 | 说明 |
---|---|
:1,10 w outfile |
1到10行另存为文件outfile |
:1,10 w >> outfile |
append 1到10行到文件outfile |
:r infile |
插入infile中的内容 |
:23r infile |
在23行处插入infile中的内容 |
命令 | 说明 |
---|---|
:e . |
当前目录下打开文件浏览器 |
:Sex |
拆分窗口并且打开文件浏览器 |
:Sex! |
垂直拆分窗口并且打开文件浏览器 |
:browse e |
图形化打开选择新文件(windows系统) |
:ls |
展示缓存 |
:cd .. |
转到父目录 |
:args |
展示文件路径 |
:args *.php |
打开新文件*.php |
:grep expression *.php |
返回包含表达式expression的一系列文件 |
:gf |
返回光标所在word对应的filename |
命令 | 说明 |
---|---|
:!pwd |
执行pwd 命令后返回vim |
!!pwd |
执行pwd 命令后插入到文件 |
:sh |
暂时到shell界面(exit可回到vim) |
命令 | 说明 |
---|---|
:%!fmt |
对齐所有的行 |
!}fmt |
当前位置对齐所有的行 |
5!!fmt |
对齐接下来的5行 |
命令 | 说明 |
---|---|
:tabnew |
创建一个新的tab |
gt |
展示下一个tab |
:tabfirst |
展示第一个tab |
:tablast |
展示最后一个tab |
:tabm n(position) |
重新安装tab |
:tabdo %s/foo/bar/g |
在所有的tab中执行搜索替换 |
:tab ball |
将所有打开的文件放入tab中 |
:new abc.txt |
在下一个窗口中编辑abc.txt |
命令 | 说明 |
---|---|
:e filename |
在当前窗口编辑filename |
:split filename |
拆分窗口并且打开filename |
ctrl-w up arrow |
光标移动到top window |
ctrl-w ctrl-w |
光标移动到next window |
ctrl-w_ |
垂直方向最大化当前窗口 |
ctrl-w| |
水平方向最大化当前窗口 |
ctrl-w= |
所有窗口同样大小 |
10 ctrl-w+ |
当前窗口增加10行 |
:vspilt file |
垂直方向拆分窗口并打开file |
:sview file |
和只读模式下拆分窗口相同 |
:hide |
关闭当前窗口 |
:only |
关闭其他窗口 |
:b 2 |
当前窗口中打开#2 |
命令 | 说明 |
---|---|
Ctrl+n Ctrl+p(插入模式) |
补全单词 |
Ctrl+x Ctrl+l |
补全行 |
set dictionary=dict |
设定dict为一个目录 |
Ctrl+x Ctrl+k |
补全目录 |
命令 | 说明 |
---|---|
m{a-z} |
标记当前位置为{a-z} |
'{a-z} |
移动到位置{a-z}} |
'' |
移动到上一个位置 |
命令 | 说明 |
---|---|
:ab mail mail@providor.org |
设定mail@providor.org的缩写为mail |
命令 | 说明 |
---|---|
:set autoindent |
打开自动缩进 |
:set smartindent |
打开智能缩进 |
:set shiftwidth=4 |
设置默认缩进大小为4 |
ctrl-t, ctrl-d |
打开/取消缩进模式 |
>> |
缩进 |
<< |
un缩进 |
=% |
缩进括号之内的代码 |
1GVG |
缩进整个文档 |
命令 | 说明 |
---|---|
:syntax on |
打开代码高亮 |
:syntax off |
关闭代码高亮 |
:set syntax=perl |
强制代码高亮 |
命令 | 说明 |
---|---|
:set paste |
粘贴模式 |
:set pastetoggle=<F11> |
设置切换粘贴模式的快捷键为F11 |
进入命令模式之后,ctrl + r,可以进行粘贴。
"
是粘贴缓冲内容,%
是粘贴当前文件名,/
是粘贴最近一次搜索内容,+
是粘贴剪切板中的内容。