https://blog.csdn.net/mergerly/article/details/21620465
宏命令
按q+x 开始录制宏,x可用其他字母代替,只要不是已经设定的快捷键
按q 结束宏录制
按@x播放宏 ,以上三步操作不需要进vim的命令模式
按5@x,可以重复5次播放
查找替换
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:%s/old/new/g 搜索整个文件,将所有的old替换为new
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
复制粘贴
dd 删除光标所在行
d5 删除光标所在行及向下的5行
D 删除到行末
yy 复制一行
y$ 复制到行末
y5 复制当前行及以下的5行
p 粘贴内容到当前行的下面
x 删除当前字符
. 按字符“.”再执行一次上个操作
移动光标
ctrl+f 上翻一页
ctrl+b 下翻一面
% 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处
w 跳到下一个字首,按标点或单词分割
e 跳到下一个字尾
b 跳到上一个字
0 跳至行首,不管有无缩进,就是跳到第0个字符
^ 跳至行首的第一个字符
$ 跳至行尾
gg 跳至文件的第一行
10G 跳到第10行
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找 ,此时按n会向上查找,N向下查找
`. 跳转至上次编辑位置
H 移动光标到当前屏幕上最上边的一行
M 移动光标到当前屏幕上中间的一行
L 移动光标到当前屏幕上最下边的一行
编辑
r 替换一个字符
J 将下一行和当前行连接为一行
cc 删除当前行并进入编辑模式
c$ 擦除从当前位置至行末的内容,并进入编辑模式
u 撤销
. 重复上一个编辑命令
~ 切换大小写,当前字符
>> 将当前行向右移一个单位
<< 将当前行向左移一个单位
== 自动缩进当前行
插入模式
i 从当前光标处进入插入模式
a 追加模式,置光标于当前光标之后
o 在当前行之下新加一行,并进入插入模式
可视模式
v 进入可视模式,单字符模式
V 进入可视模式,行模式
ctrl+v 进入可视模式,列模式
U 将选中块中的内容转成大写
o 跳转光标到选中块的另一个端点
aw 选中一个字
对标记进行动作
> 块右移
< 块左移
y 复制块
d 删除块
~ 切换块中内容的大小写
查询替换
https://www.cnblogs.com/PegasusWang/p/3153300.html
1、全文替换:
:%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可
如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:
:%s/\<four/4/g
显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:
:%s/\<four\>/4/g
如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:
:%s/\<four\>/4/gc
2、删除多余的空格
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是
“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
3、匹配重复性模式
即使用正则表达式的,但?、+和{要加上反斜杠,即:*,\+,\?,\{n,m}
/a*
/ab\?
/ab\+
/\(ab\)\{2,5}
小括号也需要加反斜杠:\( 和 \)
/\(ab\)\+
”或” 运算符是 “\|”
”或” 运算符是 “\|”
笨方法学Vimscript面向那些想学会如何自定义Vim编辑器的用户。
http://learnvimscriptthehardway.onefloweroneworld.com/