Guide
1. vimtutor
VIM Tutor - Version 1.7
vim自带的交互式教程, 输入vimtutor开始
2. 移动光标
h左j下k上l右Ctrl+Y向下滚一行Ctrl+E向上滚一行Ctrl+D向下滚半屏Ctrl+U向上滚半屏w跳到下一单词开头b跳到上一单词开头e跳到下一单词结尾2w跳两个单词0移动到行首^移动到非空格行首$移动到行尾Ctrl+G显示当前在文件中的行数G移动到最后一行行首gg移动到第一行行首Ctrl+O移动到前一光标位置(Old position)Ctrl+I移动到后一光标位置(In position):100跳转到第100行fH当前行查找H, 并移动光标到HtH当前行查找H, 并移动光标到H前'<跳转到上一次可视选择的起始位置'>跳转到上一次可视选择的结束位置'[跳转到粘贴的超始位置']跳转到粘贴的结束位置'^上一次插入模式开始的位置'.上一次修改的位置o在选区的开头和结尾间切换位置(当选中文本时使用)
3. 文本编辑
x删除光标后一个字符i在光标位置开始插入a在光标位置后一个字符位置开始插入c剪切并进入插入模式- 选后
d仅删除 - 选后
s删除并进入插入模式 - 选后
x仅剪切 A从当前行末非空字符处开始插入I从当前行首非空字符处开始插入dw删除一个单词, 包括单词后的空格de删除一个单词, 不包括单词后的空格d$删除到行尾, 包含换行符D删除到行尾, 不包含换行符2dw删除2个单词dd删除当前行u撤消上一修改U撤消当前行的所有修改Ctrl+R重新执行上一撤消的修改P在光标前粘贴p在光标后粘贴rx替换一个字符Rxxx替换多个字符ce剪切到词尾c$剪切到行尾, 包含换行符C剪切到行尾, 不包含换行符ci(修改括号内文本(change inner)dap删除整个段落(delete around paragraph)%在匹配的两个括号间跳转, 支持(), [], {}o在下方插入新行O在上方插入新行:s/old/new替换当前行第一个old为new:s/old/new/g替换当前行所有old为news/\<old\>/new/g替换独立单词old为new:m,ns/old/new替换第m行至第n行,每行第一个old为new:m,ns/old/new/g替换第m行至第n行,所有的old为new:%s/old/new替换文件中每一行第一个old为new:%s/old/new/g替换文件中所有的old为new:'<,'>s/\%Vold/new/g替换指定范围内的old为new(使用"\%V"):'<,'>norm I#在每行开头插入#(用于每行开头不对齐时):'<,'>norm A//在每行末尾追加//(用于每行结尾不对齐时):'<,'>norm ^xx删除开头的两个字符
4. 字符串搜索
/str向后搜索并跳转到下一字符串为str的位置/strn多次按n, 执行多次向后搜索N多次按 N, 执行多次向前搜索:set ic忽略大小写(Ignore case):set noic不忽略大小写:set hls高亮显示匹配结果(Highlight search):set nohls不高亮显示:set is实时搜索输入字符的匹配结果(Incremental search):set nois不实时搜索
5. 文件寄存器
:!ls -d */执行外部命令 ls -d */:!dir执行外部命令 dir:w保存:q!强制退出, 不保存修改:wq!强制退出, 保存修改:r file.txt插入文件内容:r !ls插入外部命令的输出:e file.txt打开文件:e!重新加载当前文件:call rename('old.txt', 'new.txt')重命名文件:saveas file.txt另存为:let @+=@0将寄存器"0内容复制到系统剪切板:reg查看所有寄存器的内容:reg 0查看"0寄存器的内容
6. 窗口操作
:new创建水平分割窗口:vnew创建垂直分割窗口:split复制水平分割窗口:vsplit复制垂直分割窗口Ctrl+W W在不同窗口间切换Ctrl+W H切换到左边的窗口Ctrl+W L切换到右边的窗口Ctrl+W J切换到下边的窗口Ctrl+W K切换到上边的窗口
7. 选择区域
gv重新选中上次的区域vip选取当前段落vi(``vi[``vi{选择括号其中内容, 不包括本身va(``va[``va{包括括号本身viw选择单词vaw选择单词和后面的空格viW选择一整句(用空格分隔)vaW选择一整句和后面的空格vit选择一个标签内() vat包括标签本身保存选中内容到新文件
v 选择要保存的内容 y :new p :w file.txt保存选中行到新文件
V 选择要保存的行 :w file.txt
8. 宏录制
qa开始录制宏到寄存器a中q停止录制@a执行一次寄存器a中的宏@@重复最近一次执行的宏10@a重复执行宏a 10次
9. 辅助命令
Ctrl+D- 命令行模式下, 显示补全命令列表
- 插入模式下, 减少缩进(增加为
Ctrl+T) - 普通模式下, 向下滚半屏
:scriptnames列出vim加载的脚本:source ~/.vimrc手动加载配置文件gg=G全文自动缩进:Ctrl+P向上浏览历史命令:Ctrl+N向下浏览历史命令:Ctrl+A光标下的数字增加1(先按数字x, 再按Ctrl+A可增加步长x)~光标下的字母在大小写间切换:Ctrl+X光标下的数字减小1(先按数字x, 再按Ctrl+X可减小步长x)u转小写U转大写.重复执行上一次的命令J合并选择的行'<,'>g/^\s*$/d删除空行
10. 帮助
:help进入帮助文档:help w:help c_CTRL-D:help insert-index:help user-manual