查找指令
f{char}
/F{char}
在行内查找下/上一指定字符,光标停留在查找到的指定字符上,重复;
,回退,
;t{char}
/T{char}
在行内查找下/上一指定字符,光标停留在查找到的指定字符之前,重复;
,回退,
;/pattern<CR>
/?pattern<CR>
在文档中查找下/上一处匹配项,重复n
,回退N
;*
查找当前光标下的单词,重复n
,回退N
。
替换指令
:s/target/replacement
执行一处替换:s/target/replacement/g
执行一行替换:%s/target/replacement/g
执行全文替换
移动指令
j,k
/gj,gk
移动实际行/屏幕行0
/g0
移动到实际行/屏幕行行首^
/g^
移动到实际行/屏幕行的第一个非空白字符- 移动到实际行/屏幕行的行尾
基于单词移动
w
正向移动到下一单词开头b
反向移动到当前单词/上一单词的开头e
正向移动到当前单词/下一单词的结尾ge
反向移动到上一单词的结尾W
正向移动到下一字串开头B
反向移动到当前字串/上一字串的开头E
正向移动到当前字串/下一字串的结尾gE
反向移动到上一字串的结尾
简单理解:字串比单词更长,
e.g.
为4个单词或1个字串,如果要删除的词里有特殊符号,则用字串删除更方便
删除指令
x
/dl
删除当前字符dd
删除当前行dw
删除当前单词daw
删除当前文本对象dap
删除当前段落<C-h>
插入模式下删除前一个字符(同退格键)(bash也可用)<C-w>
插入模式下删除前一个单词(bash也可用)<C-u>
插入模式下删除至行首(bash也可用)
复制和粘贴指令
y
复制yankyw
复制当前单词yap
复制当前段落"ayw
复制当前单词到a寄存器
p
粘贴put(光标之后)"ap
将寄存器a中的内容复制到当前位置
P
粘贴(光标之前)<C-o>{register}
在插入模式下,粘贴寄存器{register}中的内容到当前光标下
运算指令
[count]<C-a>
对当前光标上或之后的数值加[count][count]<C-x>
对当前光标上或之后的数值减[count]
注:<C-a>
与<C-x>
可以对光标之后的第一个数值进行操作,不必将光标移动到数值的位置也可。
其他指令
g~
反转大小写g~~
反转当前行大小写g~w
反转当前单词大小写g~W
反转当前字串大小写g~ap
反转当前段落大小写
gU
转换为大写gUU
转换当前行为大写gUw
转换当前单词为大写gUap
转换当前段落为大写
gu
转换为小写guu
转换当前行为小写guw
转换当前单词为小写guap
转换当前段落为小写
>
/<
增加/减小缩进>>
缩进当前行>w
/>l
增加当前行缩进(毕竟单词和字符都在一行)>ap
增加当前段落缩进
=
自动缩进gc
注释/反注释(需安装tpope/vim-commentary插件)gcc
注释/反注释当前行gcap
注释当前段落
zz
重绘屏幕,当前行显示在窗口正中<C-o>zz
在插入模式下切换普通模式并重绘屏幕,之后重新返回插入模式
xp
调换光标之后的两个字符ddp
调换当前行和它的下一行yyp
创建当前行副本
跳转指令
m{char}
负责设置标记\
{char}` 负责跳转到标记
经典组合
ea
在单词结尾添加f,dt.
删除后半句(逗号到句号之间内容)
寄存器说明
有名寄存器(普通寄存器)
"a
~"z
特殊寄存器
""
无名寄存器,缺省使用,x
,s
,d{motion}
,y{motion}
都会覆盖其内容;"0
复制专用寄存器,当使用y{motion}
时,会覆盖其内容;"_
黑洞寄存器,有去无回。"+
/"*
系统剪贴板,有一定区别,但是不加以区分了"+p
将系统剪贴板的内容粘贴
"=
表达式寄存器"%
当前文件名(read only)"#
轮换文件名(read only)".
上次插入的文本(read only)":
上次执行的Ex命令(read only)"/
上次查找的模式(可使用:let
进行赋值)
技巧总结
- 能够重复,就别用次数。
dw.
要优于2dw
和d2w
- 尽量不用光标键,使手指始终位于本位行上