Vim 学习笔记

1 打开方式

上下分:
:sp 新文件

左右分:
:vs 新文件

窗口切换:
ctr+w+上下左右方向键

注意:先按 ctr 和 w,然后松开,然后再按方向键。

或者直接用:
ctr+ww

2 保存和关闭文件

保存文件:
:w

退出文件:
:q

保存文件并退出:
:wq

另存到一个文件:
:w filename

将第 10 行到 20 行的内容另存到一个文件中:
:10,20 w filename

强制退出文件:
:q!

3 文件之间的切换

若用 vim 一次打开了多个文件,则可以进行切换。

切换至下一个文件:
:n

切换至上一个文件:
:N

4 函数或头文件跳转

将光标移动到函数调用出,然后gf

5 翻页操作

上翻一页:
ctrl + f

下翻一页:
ctrl + b

6 定位操作

定位到第 12 行:
12gg

定位到首行:
gg

定位到尾行:
G

将光标移动到前一个单词首部:
b

将光标移动到下一个单词尾部:
e

将光标移动到行首:
^

将光标移动到行尾:
$

7 进入和退出插入的编辑模式

进入插入的编辑模式:
i

进入插入插入的编辑模式,且在当前行的下面插入一个空行:
o

退出编辑模式,进入一般模式:
ESC

8 块选择

选择多个字符:
v

选择多行:
V

矩形选择:
ctr + v

9 复制操作

复制光标所在的行:
yy

复制光标所在的向下 12 行:
12yy

复制第 9 到 85 行:
:9,85y

复制当前光标所在的位置到行尾:
y$

复制行首到当前光标所在的位置:
y^

若要复制某行中间的内容或某个块的内容:
先退出编辑模式,再将光标定位到某个单词前面,然后按 v 或者 V 或者 ctr + v,接着上下左右选中所需要复制的块区域,然后再按 y

10 粘贴操作

将已复制的数据粘贴在光标的下一行:
p

11 删除操作

删除当前行:
dd

删除当前行开始向下的 12 行:
12dd

删除第 9 到 85 行:
:9,85d

删除当前行光标所在的位置到行尾:
d$

删除行首到当前行光标所在的位置:
d^

向后删除一个字符:
x

向后删除 10 个字符:
10x

若要删除某行中间的内容或某个块的内容:
先退出编辑模式,再将光标定位到某个单词前面,然后按 v 或者 V 或者 ctr + v,接着上下左右选中所需要删除的块区域,然后按 d

12 读入另外一个文件中的内容到光标处

:r filename

13 恢复与重做操作

恢复:
u

重做:
ctr + r

14 搜索字符串

向下查找 test 字符串:
/test

注意:是在一般模式下输入 / 进入命令行模式,然后输入所要查找的字符串。

重复前一个查找操作:
n

反向重复前一个查找操作:
N

15 进入和退出替换的编辑模式

将光标移动到要替换的字符处,然后:
r
再输入替换后的字符。

注意:只替换一次。

将光标移动到要替换的字符串的开始位置,然后:
R
再输入替换后的字符串。结束时按 ESC

16 字符串替换

替换每行的第一个 abc 为 efg:
:%s/abc/efg

替换每行的所有 abc 为 efg:
:%s/abc/efg/g

替换光标所在行的第一个 abc 为 efg:
:s/abc/efg

替换光标所在行的所有 abc 为 efg:
:s/abc/efg/g

替换 1 到 5 行的所有 abc 为 efg:
:1,5s/abc/efg/g

s 表示 substitute。

17 自动补全

打出部分单词后,点击 tab

18 查询函数参数等一些信息

ctrl + n

ctrl + p

19 对齐

v,选择多行,然后 =

20 括号匹配

先将光标放到一个括号上,然后按 %,自动匹配相应的另一个括号。

21 显示或隐藏行号

显示行号:
set number

隐藏行号:
set nonumber

22 粘贴模式

开启粘贴模式:
set paste
关闭粘贴模式:
set nopaste


Reference

  • 鸟哥的Linux私房菜: 基础学习篇