参考资料:《Vim 7.4 中文手册》,《Vim实用技巧》
1)查找某个单词时,可以用/,?;也可在普通模式下,光标定位在该单词下,输入*,#。
2)关于标记:‘‘(两个单引号):跳转回刚才的位置。
ma :设置标记 【小写是文件内的,大写是全局的】
‘a :跳转到a的标记处
<C-I> 跳转到相对新的位置
<C-O> 跳转到相对旧的位置
3)一些特殊标记:
' 跳转前的光标位置
" 最后编辑的光标位置
[ 最后修改的开始位置
] 最后修改的结束位置
4)"."是Vim中一个非常简单而有用的命令,它重复最后一次的修改操作。
"."命令重复任何除"u"(撤销),<C-R>和冒号命令外的修改。
5)可视模式:v,V
V:按行选择。
可视模式下可用:o,O移动到对角上或另一边上。
6)文本对象有:
“w” :word
“s”:sentence
“p":passage
“(”或者“)”:()内容
“[”或者“]”:[]中内容
“{”或者“}”:{}中内
7)~:变换大小写。
8):args *.txt 可以打开多个文件。
使用next,previous等来移动。
9)使用寄存器:
拷贝:
"fyas 拷贝一个句子到寄存器f
"fYas 拷贝一个句子增加到寄存器f
粘贴:
插入模式时:<C-R> {register} 将寄存器内容插入到光标位置;
普通模式时:"fp 将寄存器f内容粘贴出来
特殊寄存器:
"寄存器:默认存储器。内容是最近删除或者复制内容。
0寄存器:存储复制内容
10)文件名操作:
:saveas newname 另存为newname
11)分割窗口:split vsplit
<C-W> w h j k l t b变换窗口(top bottom)
<C-W> H J K L 移动窗口(top bottom)
12)折叠:
zf创建一个折叠
zo打开一个折叠
zc关闭一个折叠
zr减少折叠
zm折叠更多
如果你有一个嵌套了好几层深的折叠,可以用如下两个命令操作:
zR 这几个嵌套全部打开
zM 这几个嵌套全部关闭
还可以用如下命令快速禁止和恢复折叠功能:
zn 快速禁止折叠功能
zN 快速恢复折叠功能
13)记录和回放命令:
记录:
普通模式下: q{register} q
q大写寄存器 q 追加内容
执行宏:
@{register} 第二次开始就可以用@@
14)用来记录操作的寄存器和与你用来拷贝文本的寄存器是相同的。
15)替换:
:%substitute/from/to/gc
主要参数:
%:表示所有行
g:表示global全局
c:confirm,确认
行范围参数:
. :表示当行
0:表示首行
$:表示末行
Num:表示某一行
行范围示例: :1,5s/this/that/g 1到5行上执行替换命令。
:54s/President/Fool/ 指定第54行进行替换
16)global命令:
:[range]global/{pattern}/{command} 其中pattern,会让你找到符合该模式的某一行
17)大小写转换:
~ 交换大小写
U 转换成大写
u 转换成小写
guw 把这个单词变成小写
gUw 把这个单词变成大写
g~~ 把本行转换大写
可视模式下,可直接用U,u来转换。
18)读写文件:
:read {filename} 将某个文件读入某行
:.,$write tempo 将部分本文件写入tempo文件
:.write >>tempo 将当前行追加入tempo文件
19)反转行顺序:
:g/^/m 0
其中m是move的意思
20)单词统计:
g<C-G>
21)命令行窗口:
q:
可以编辑其中的命令,并执行。
22)查找文件:
gf(光标移动到文件下)
:find 文件名
可以添加路径: :set path+=path
23)缓冲区列表:
查看命令: :buffers或者:ls
打开一个缓冲区: :buffer 2(缓冲区号)
:buffer name(缓冲区文件名)
变换缓冲区:
:bnext
:bprevious
:bfist
:blast
删除一个缓冲区:
:bdelete 3
24)加密:
vim -x exam.txt 启用加密
set key= 启用/关闭加密
:X 已经打开文件后实施加密
25)插入模式时更正:
<C-W> 删除该词
<C-U> 删除本行
26)自动补全:
<C-P>或者<C-N>
补全特定文本:
<C-X><C-F> 文件名
<C-X><C-L> 整行
<C-X><C-D> 宏定义
<C-X><C-I> 当前文件以及所包含的的文件
<C-X><C-K> 字典文件内的单词
<C-X><C-T> 同义词词典文件内的单词
<C-X><C-]> 标签
<C-X><C-V> Vim命令行
27)从另一行拷贝:
<C-Y> 该命令插入光标上方的字符。
当复制前一行文本的时候,这个命令很有用。
28)数字加减:
普通模式下,光标移动到数字下:
<C-A> 增加1
3<C-A> 增加3
<C-X> 减去1
29)改动多个文件:
:args *.c
:argo command 所有文件执行命令
30)单个模式里匹配大小:
\c 在模式前添加\c,忽略本次大小写敏感
\C 在模式前添加\C,本次匹配大小写敏感
31)撤销树:
:undolist 查看撤销树
:g- 时间点后退
:g+ 时间点前进
:undo num 跳转到某一个节点上
:earlier 10s 回到10秒前 (m:代表分钟,h:代表小时,d:代表天)