Vim笔记

参考资料:《Vim 7.4 中文手册》,《Vim实用技巧》

1、查找某个单词时,可以用/,?;也可在普通模式下,光标定位在该单词下,输入*,#。

2、关于标记

1
2
3
4
5
6
// '为单引号
'' 跳转回刚才的位置
ma 设置标记 【小写是文件内的,大写是全局的】
'a 跳转到a的标记处
<Ctrl-i> 跳转到相对新的位置
<Ctrl-o> 跳转到相对旧的位置

3、一些特殊标记

1
2
3
4
'    跳转前的光标位置
" 最后编辑的光标位置
[ 最后修改的开始位置
] 最后修改的结束位置

4、Redo/Undo

1
2
3
4
5
6
7
8
9
u            undo
<Ctrl-r> redo

// 撤销树
:undolist 查看撤销树
:g- 时间点后退
:g+ 时间点前进
:undo num 跳转到某一个节点上
:earlier 10s 回到10秒前 m:代表分钟,h:代表小时,d:代表天

5、点命令

. 重复最后一次的修改操作,重复任何除"u"(撤销),<C-R>和冒号命令外的修改

6、可视模式

1
2
v    逐光标选择,可视模式下可用:o,O移动到对角上或另一边上。
V 按行选择

7、文本对象有

1
2
3
4
5
6
w            word  
s sentence
p passage
(or) ()内容
[or] []中内容
{or} {}中内

8、大小写

1
2
3
4
5
6
7
~        交换大小写
U 转换成大写
u 转换成小写
guw 把这个单词变成小写
gUw 把这个单词变成大写
g~~ 把本行转换大写
// 可视模式下,可直接用U,u来转换。

9、文件操作

1
2
3
4
5
6
7
8
gf(光标移动到文件下)
:find 文件名 可以添加路径: :set path+=path
:args *.txt 可以打开多个文件 // 使用next,previous等来移动
:argo command 所有文件执行命令
:saveas newname 文件另存为newname
:read {filename} 将某个文件读入某行
:.,$write tempo 将部分本文件写入tempo文件
:.write >>tempo 将当前行追加入tempo文件

10、使用寄存器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1)特殊寄存器:
"寄存器 默认存储器。内容是最近删除或者复制内容。
0寄存器 存储复制内容

2)拷贝/粘贴:
拷贝
"fyas 拷贝一个句子到寄存器f
"fYas 拷贝一个句子增加到寄存器f
粘贴
插入模式时 <Ctrl-R> {register} 将寄存器内容插入到光标位置;
普通模式时 "fp 将寄存器f内容粘贴出来

3)记录和回放命令:
记录
q{register} q // 普通模式下,q大写寄存器 q 追加内容
执行宏
@{register} 第二次开始就可以用@@

11、分割窗口:split vsplit

1
2
<Ctrl-W> w h j k l t b变换窗口(top bottom)
<Ctrl-W> H J K L 移动窗口(top bottom)

12、折叠

1
2
3
4
5
6
7
8
9
10
11
12
13
zf    创建一个折叠
zo 打开一个折叠
zc 关闭一个折叠
zr 减少折叠
zm 折叠更多

如果你有一个嵌套了好几层深的折叠,可以用如下两个命令操作:
zR 这几个嵌套全部打开
zM 这几个嵌套全部关闭

还可以用如下命令快速禁止和恢复折叠功能:
zn 快速禁止折叠功能
zN 快速恢复折叠功能

13、替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
:%substitute/from/to/gc
主要参数:
%:表示所有行
g:表示global全局
c:confirm,确认

行范围参数:
. :表示当行
0:表示首行
$:表示末行
Num:表示某一行

行范围示例:
:1,5s/this/that/g 1到5行上执行替换命令。
:54s/President/Fool/ 指定第54行进行替换

14、global命令:

1
:[range]global/{pattern}/{command}    //其中pattern,会让你找到符合该模式的某一行

15、反转行顺序

1
:g/^/m 0 //其中m是move的意思

16、单词统计

1
g<Ctrl-g>

17、命令行窗口

1
q:  可以编辑其中的命令,并执行。

18、缓冲区列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
查看命令
:buffers或者:ls

打开一个缓冲区:
:buffer 2(缓冲区号)
:buffer name(缓冲区文件名)

变换缓冲区:
:bnext
:bprevious
:bfist
:blast

删除一个缓冲区:
:bdelete 3

19、加密

1
2
3
vim -x exam.txt 启用加密
set key=启用/关闭加密
:X 已经打开文件后实施加密

20、插入模式时更正

1
2
<Ctrl-W> 删除该词
<Ctrl-U> 删除本行

21、自动补全

1
2
3
4
5
6
7
8
9
10
11
<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命令行

22、从另一行拷贝

1
2
3
yy/p    yy复制,p粘贴
<C-Y> 该命令插入光标上方的字符
<C-E> 该命令插入光标下方的字符

23、数字加减

1
2
3
4
普通模式下,光标移动到数字下: 
<C-A> 增加1
3<C-A> 增加3
<C-X> 减去1

24、单个模式里匹配大小写敏感

1
2
\c 在模式前添加\c,忽略本次大小写敏感
\C 在模式前添加\C,本次匹配大小写敏感

评论