vim 常用指令,从用户版本7.4中摘取部分常用功能,详细功能可到官方网址下载
1 移动光标
h :左
j :下
k :上
l :右
2 删除
删除一个字符:光标移动到字符上,输入"x",输入几次,删除几个。
删除一行:使用"dd",后一行会移上填掉留下的空行。
删除换行符:使用"J"(大写),把当前行和下一行连起来。
3 撤销与重做
撤销:使用"u",撤销最后一个删除操作,多次使用,依次撤销。(no compatible)
重做:CTRL-R, 回退前一个撤销,多次使用,依次撤销
"U" 行撤销,撤销所有在最近编辑的行上的操作。
4 添加
"i", 在光标所在字符前面插入字符
"a", 在光标所在字符后面插入字符
5 开始一个新行
"o"(小写),光标下方建立一个新行,并切换到插入模式
"O"(大写),光标上方建立一个新行,并切换到插入模式
6 指定计数
在命令前加一个数字:把命令执行n次,如“9k”:向上移动9行,“3a!”:在光标所在字符后面增加3个!,“3x”:删除3个字符
7 退出
"ZZ":保存文件并退出,等同于 wq
":e!":放弃修改,重新编辑,相当于:q!后,再重新打开
8 寻求帮助
":help": :help {主题}
9 词移动
"w" 移动光标到后一个单词的词首
"b" 移动光标到前一个单词的词首
"e" 移动光标到后一个单词的词末
"ge"移动光标到前一个单词的词末
10 字符串移动(以空白字符分隔)
"W" 移动光标到后一个字符串的词首
"B" 移动光标到前一个字符串的词首
"E" 移动光标到后一个字符串的词末
"gE"移动光标到前一个字符串的词末
11 移动到行首或行尾或某个位置
"$" 移动光标到行尾
"^" 移动光标到一行的第一个非空字符
"0" 移动光标到一行的第一个字符
"%" %50移动到中间位置
13 移动到一个指定的字符(用<Esc>可取消操作)
"fx" 向右查找本行中的字符x
"Fx" 向左查找本行中的字符x
"tx" 向右查找,把光标移动到目标字符的前一个字符
"Tx" 向左查找,把光标移动到目标字符的后一个字符
14 括号匹配 适用 (), [], {}
"%" 当光标不在一个有用字符上时,会正向查找到一个,若已经在时,会移动到匹配的另一个字符上。
15 确定当前位置
ctrl-G
16 在文本中查找一个单词
把光标移动到某个单词下面,使用"*"命令,会把单词当作被查找的字符串,使用"#"命名,反向查找
17 查找整个单词
例:只查找"the"结尾的单词,可以用"/the\>","\>"是一个特殊记号,表示匹配单词的末尾;类似的“\<”表示匹配单词的开头,如"/\<the"
18 简单的查找模式
行首与行尾:"^"匹配行首,"$"匹配行尾,如"^include"仅匹配一行开始的include,如"was$"仅匹配行尾的was。如"^the$"仅匹配仅有the的这一行
匹配任何单个字符:"."匹配任何字符,如"c.m"匹配com,cam之类的单词
匹配特殊字符:匹配特殊字符, 加一个反斜杠消除它的特殊含义,如"ter\."
19 移动文本
用"d","x"删除的文本,会被存起来,可以用p重新粘帖
20 拷贝文本,输完指令,需要按p粘贴
"yw":拷贝单词,"y2w":拷贝两个单词, 包括空格, "ye":不包括空格
"yy","Y":拷贝一整行
"y$":拷贝到行尾
21 替换模式
"R"启动替换模式,输入的每个字符都会覆盖当前光标上的字符
22 分割窗口
:split 打开新窗口
:ctrl-w 在窗口间跳转
:close 关闭窗口
:only 关闭其他所有窗口
:split two.c 打开另一个窗口,并用该窗口编辑另一个指定的文件
:new 打开窗口编辑一个新文件
扩大(缩小)窗口:ctrl-w +,如"4 ctrl-w +",扩大四行,"4 ctrl-w -"缩小四行
:vsplit 垂直分割
23 窗口间跳转
CTRL-W h 跳转到左边的窗口
CTRL-W j 跳转到下边的窗口
CTRL-W k 跳转到上边的窗口
CTRL-W l 跳转到右边的窗口
CTRL-W t 跳转到最顶上的窗口
CTRL-W b 跳转到最底下的窗口
24 移动窗口
CTRL-W K 把当前窗口移到最上面
CTRL-W H 把当前窗口移到最左边
CTRL-W J 把当前窗口移到最下边
CTRL-W L 把当前窗口移到最右边
25 对所有窗口执行命令
:qall 关闭所有窗口
:wall 保存所有窗口
:wqall 关闭并保存所有窗口
:qall! 强制退出所有窗口
vim -o one.txt two.txt three.txt 为每个文件打开一个窗口 -o 用于垂直分割窗口
26 vim 比较文件差异
vimdiff main.c~ main.c 用垂直分割的方式打开两个文件
:edit main.c
:vertical diffsplit main.c~
:vertical 窗口用垂直的方式分割,不写用水平方式
:edit main.c
:vertical diffpatch main.c diff
如果有一个当前文件的补丁或者patch,先编辑这个文件,然后告诉vim的补丁文件名称
:set noscrollbind 滚动绑定
:diffupate 更新高亮显示,从一个窗口移到另一个,更新高亮显示
:dp 消除差异,把一个高亮显示的块,从一个移动到另一个窗口,在另一个窗口执行
:do 需要继续学习,测试失败
27 命令行编辑
删除:CTRL-W 删除一个字符 /the fine pig -> /the fine; CTRL-U删除命令行全部文字
替换:<insert>切换插入字符和替换字符
取消:CTRL-C或<ESC>
28 命令行窗口
打开命令行历史记录: q:
29 更正
删除:CTRL-W 删除一个字符 /the fine pig -> /the fine; CTRL-U删除光标前全部文字,后面保留
30 显示匹配: :set showmatch :set matchtime=15 在匹配括号上面停留1.5秒
31 缩进: :set shiftwidth=4 四个空格
32 设置制表位 :set softtabstop=4 <tab>键插入四个空格的缩进量
其他常用设置:
1 :set number 在每行前面加行号 :set nonumber 在每行前面去行号
2 :set ruler 在右下角显示光标位置
3 :set ignorecase 查找时,忽略大小写 :set noignorecase 查找时,撤销忽略大小写
4 历史记录 输入"/"启动查找,按<UP>,会显示之前查找的关键字,按<DOWN>,反之
5 :set hlsearch 查找时,高亮所有匹配的地方, :set nohlsearch , :nohlsearch 关闭本次高亮显示
6 :set incsearch 在输入的过程中,就显示匹配点
7 :set nowrapscan 使得找到文件结尾后停止查找,默认打开
8 :scriptnames 确定vim的启动文件位置