Vim手册
Vim第一步
显示模式
命令 |
描述 |
:set showmode |
打开显示模式的开关 |
移动光标
命令 |
描述 |
h |
左移 |
l |
右移 |
j |
下移 |
k |
上移 |
删除字符
命令 |
描述 |
x |
删除一个字符 |
nx |
删除 n 个字符 |
dd |
删除一整行 |
ndd |
删除 n 行 |
dw |
删除一个 word |
d4w |
删除 4 个 word |
J |
删除两行之间的换行,即把两行合并 |
撤销
命令 |
描述 |
u |
撤销命令 |
Ctrl+R |
反转撤销的动作 |
U |
一次撤销对一行的操作,第二次返回对前一次的操作 |
其他编辑命令
命令 |
描述 |
i |
在当前光标之前插入文本 |
a |
在当前光标之后插入文本 |
o |
在下一行插入文本 |
O |
在上一行插入文本 |
备注:好多命令前面都可以加数字修饰,如 9k 表示向上移动 9 行。
退出
命令 |
描述 |
ZZ |
保存并退出 |
:wq |
保存并退出 |
:q! |
丢弃修改并退出 |
:e! |
丢弃所有修改并继续编辑 |
帮助
命令 |
描述 |
:help |
显示帮助手册 |
:help x |
显示 x 命令的帮助 |
:help u |
显示 u 命令的帮助 |
移动
以word移动
命令 |
描述 |
w |
把光标移动到下一个 word 首字母 |
3w |
把光标移动到下三个 word 的首字母 |
b |
b 命令和 w 相反 |
e |
把光标移动到下一个 word 尾字母 |
ge |
把光标移动到上一个 word 的尾字母 |
gE B W E |
移动更快,如 “a/b/c aa” “a/b/c” 会一次性移动 |
移动行首尾
命令 |
描述 |
$ |
移动到行尾 |
3$ |
移动到下一行的下一行的行尾 |
0 |
移动到行首 |
^ |
移动到行首第一个非空格字符上 |
移动到指定字符
命令 |
描述 |
fs |
在当前行查找下一个s,光标停在字符上 |
F |
与 f 命令相反 |
ts |
在当前行查找下一个 s,光标停在字符前一个字符上 |
括号匹配
命令 |
描述 |
% |
% 会自动匹配到与 “(”、"{"、"[" 匹配的下一个括号上 |
跳到指定行
命令 |
描述 |
3G |
3G 跳到第三行 |
G |
直接跳到最后一行 |
gg |
直接跳到第一行 |
% |
50% 跳转到文件中间,90% 跳转到文件接近尾的地方 |
H |
当前屏幕的第一行 |
M |
当前屏幕的中间 |
L |
当前屏幕的最后一行 |
定位当前行
命令 |
描述 |
Ctrl+G |
显示当前行的信息 |
:set number |
显示行号 |
:set nonumber |
关闭行号 |
:set ruler |
在 vim 右下角显示光标位置 |
滚动屏幕
命令 |
描述 |
Ctrl+U |
文本向下滚动半屏 |
Ctrl+D |
文本向上滚动半屏 |
Ctrl+E |
向上滚动一行 |
Ctrl+Y |
向下滚动一行 |
Ctrl+F |
向前滚动一屏 |
Ctrl+B |
向后滚动一屏 |
zz |
把当前行置于正中央 |
zb |
把当前行置于底端 |
备注: 大写字母一般做的事情与小写字母相反。
搜索
简单搜索
命令 |
描述 |
/string |
用于搜索一个字符串,如 /include 表示搜索 include,然后用 n 命令查找下一个,3n 表示下三个 |
?string |
和 / 搜索方向正好相反 |
:set ignorecase |
设置查找时忽略大小写 |
:set noignorecase |
重设为不忽略大小写 |
a |
上下箭头键可以使用历史搜索记录,也可使用 “a” 表示历史以 “a” 开头的搜索串 |
* |
在一个 word 上按下 “*”,表示搜索该 word |
< |
匹配 word 的开头 |
> |
匹配 word 的末尾 |
:set hlsearch |
高亮显示搜索结果 |
:set nohlsearch |
显示结果不高亮 |
:set incsearch |
在没有输入完成时就开始搜索 |
:set nowrapscan |
设置当搜索到文件尾时不重新搜索 |
正则搜索
命令 |
描述 |
^ |
只搜索开头 |
$ |
只搜索行尾 |
. |
匹配单字符,c.m 表示匹配 c 和 m 之间只有一个字母的 word |
\ |
表示转义,如要查找 “c.m” 就需要 c\.m |
小幅移动
改变文本
命令 |
描述 |
c |
类似d,但删除后会进入插入模式,如 cw 删除一个 word 后进入插入模式 |
cc |
类似 dd,但删除后会保持原来的缩进 |
快捷命令
命令 |
描述 |
x |
删除当前光标下的字符 |
X |
删除当前光标左边的字符 |
D |
删除到行尾 |
C |
修改到行尾 |
s |
修改一个字符 |
S |
修改一整行 |
替换单个字符
命令 |
描述 |
r |
替换单个字符,5rx 表示把当前 5 个字符全部替换成 x |
重复改动
Visual模式
命令 |
描述 |
左右光标 |
按下 v 进入 Visual 模式,左右移动光标即会选中移动过的位置 |
上下光标 |
按下 v 进入 Visual 模式,上下移动光标即会选中移动过的整行 |
移动文本
命令 |
描述 |
p |
当删除后再按下 p 会把原来的粘贴到光标处, P 粘贴到光标前 |
xp |
交换两个字符 |
y |
复制文本 |
yw |
复制一个word |
yy |
复制一行 |
y$ |
复制到行尾 |
定制你的VIM
命令 |
描述 |
~/.vimrc |
vim 的配置文件 |
:set autoindent |
与上行保持相同缩进 |
:set history=50 |
设置冒号命令和搜索命令的保存记录数 |
:set ruler |
总是在 vim 窗口右下角显示当前光标信息 |
:set showcmd |
显示你当前正在输入的命令 |
:filetype plugin indent on |
开启三种智能模式 |
:autocmd FileType text setlocal textwidth=78 |
普通文本文件一行超过 78 个字符自动换行 |
:set nowrap |
设置不换行 |
:set sidescroll=10 |
当到行尾时自动滚动显示 10 个字符的上下文 |
:set whichwrap=b,s,<,>,[,] |
设置包围字符 |
:set list |
让制表符可见 |
:set cmdheight=3 |
设置最后显示 3 行信息 |
语法高亮
显示颜色
命令 |
描述 |
:syntax enable |
显示语法高亮 |
:syntax clear |
清除语法高亮 |
:syntax off |
彻底停用语法高亮 |
:syntax manual |
只对某些文件高亮 |
设置背景
命令 |
描述 |
:set background=dark |
设置使用暗色背景 |
:set background=light |
设置使用亮色背景 |
多个文件
编辑另一个文件
命令 |
描述 |
:edit foo.txt |
编辑 foo.txt 文件 |
:write |
上一个文件未保存,提示错误时,表示保存文件 |
:edit! foo.txt |
强制 VIM 丢弃当前未保存的修改并开始编辑新文件 |
:hide edit foo.txt |
编辑另一文件,但不保存当前文件的改动,使之成为一个隐藏缓冲区 |
文件列表
命令 |
描述 |
vim one.c two.c three.c |
在 VIM 启动时就指定编辑多个文件 |
:next |
开始下一个文件的编辑 |
:wnext |
保存当前文件并编辑下一个文件 |
当前编辑的文件
命令 |
描述 |
:args |
查看整个列表有哪些文件 |
:previous |
编辑前一个文件 |
:wprevious |
保存当前修改并编辑前一个文件 |
:last |
编辑最后一个文件 |
:first |
编辑第一个文件 |
自动存盘
命令 |
描述 |
:set autowrite |
设置在编辑另一文件时自动存盘文件 |
:set noautowrite |
设置关闭自动存盘 |
编辑另一文件列表
命令 |
描述 |
:args five.c six.c seven.c |
不要重启 VIM,重新定义一个文件列表 |
Ctrl+^ |
在编辑文件之间快速切换 |
备份
命令 |
描述 |
:set backup |
设置备份文件,备份的总是前一个版本 |
:set backupext = .bak |
设置生成备份文件的后缀 |
:set patchmode=.orig |
让 vim 备份原始文件 |
向文件中追加内容
命令 |
描述 |
:write >> logfile |
把当前文件内容追加到 logfile 中 |
查看文件
命令 |
描述 |
vim -R file |
以只读方式运行 Vim |
vim -M file |
强制性的避免对文件进行修改 |
:set modefiable/:set write |
去掉避免强制修改保护 |
更改文件名
命令 |
描述 |
:saveas move.c |
把当前文件存为 move.c,原来文件还存在 |
:file move.c |
改变当前正在编辑的文件名,但不保存该文件 |
分割窗口
分割一个窗口
命令 |
描述 |
:split |
将屏幕分为上下两个窗口 |
Ctrl+W |
切换当前活动窗口 |
:split two.c |
在新窗口中编辑另一文件 |
:new |
打开一个窗口并编辑一个空缓冲区 |
:3split alpal.c |
打开一个高度为 3 行的新窗口 |
Ctrl-W + |
增加窗口高度 |
Ctrl-W - |
减小窗口高度 |
:vsplit |
新窗口出现在当前窗口左边 |
关闭窗口
命令 |
描述 |
:close |
关闭当前窗口 |
:only |
关闭除当前窗口外的所有窗口 |
切换窗口
命令 |
描述 |
Ctrl-W h |
到左边窗口 |
Ctrl-W j |
到下边窗口 |
Ctrl-W k |
到上边窗口 |
Ctrl-W l |
到右边窗口 |
Ctrl-W t |
到顶部窗口 |
Ctrl-W b |
到底部窗口 |
移动窗口
命令 |
描述 |
Ctrl-W K |
将当前窗口向上提升一次 |
Ctrl-W H |
将当前窗口向左移动一次 |
Ctrl-W J |
将当前窗口向下移动一次 |
Ctrl-W L |
将当前窗口向右移动一次 |
所有窗口的操作
命令 |
描述 |
:qall |
在打开了很多窗口的情况下退出 Vim,如果有未保存的使用 :write 保存更改 |
:wall |
被修改了未保存而直接退出 |
:wqall |
保存并退出所有窗口 |
:qall |
放弃所以修改并退出 VIM |
为文件打开新窗口
命令 |
描述 |
vim -o one.txt two.txt three.tx |
为每一个文件打开一个新窗口 |
比较两个文件
命令 |
描述 |
vimdiff main.c~ main.c |
比较 main.c~ 和 main.c 的不同 |
:edit main.c :vertical diffsplit main.c |
在编辑一个文件时比较两个文件 |
:set noscrollbind |
设置在滚屏时不两个一起滚动 |
]c |
定位到下一个不同之处 |
清除差异
命令 |
描述 |
:diffupdate |
重新显示两个文件的不同之处 |
dp |
使该行的文件相同 |
do |
使该行的文件相同 |