学习、工作和狗粮

VIM学习记录

2018/01/27 Share

再老就学不会了

参考资料

简明 VIM 练级攻略
鳥哥的 Linux 私房菜 – 第九章、vim 程式編輯器
vim-galore-zh_cn

Vim 哲学

Vim 采用模式编辑的理念,即它提供了多种模式,按键在不同的模式下作用不同。你可以在 普通模式 下浏览文件,在 插入模式 下插入文本,在 可视模式 下选择行,在 命令模式 下执行命令等等。起初这听起来可能很复杂,但是这有一个很大的优点:不需要通过同时按住多个键来完成操作,大多数时候你只需要依次按下这些按键即可。越常用的操作,所需要的按键数量越少。

概念

  • Normal 模式

当是,在你进入第二级时,需要再说一下 Normal 模式。在一般的编辑器下,当你需要copy一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl-C。也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。这个你需要知道。

文档声明

  1. 下面的文字中,如果是 Ctrl-λ我会写成 .
  2. 以 : 开始的命令你需要输入 回车,例如 — 如果我写成 :q 也就是说你要输入 :q.

光标操作

如何回到普通模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
hjkl
# 基础
# fa:向右移到a第一次出现的地方,
f[字符]
# → 数字零,到行头
0
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ → 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
/pattern → 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)

# → 到第 N 行 (陈皓注:注意命令中的G是大写的,另我一般使用 : N 到第N行,如 :137 到第137行)
NG
# → 到第一行。(陈皓注:相当于1G,或 :1)
gg
# → 到最后一行。
G

# 按单词移动:
# > 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(陈皓注:程序变量)
# > 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(陈皓注:程序语句)
# → 到下一个单词的开头。
w
# → 到下一个单词的结尾。
e

# : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
%
# 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
* 和 #

插入

1
2
3
4
5
6
7
8
# → 在光标后插入
a
# → 在当前行后插入一个新行
o
# → 在当前行前插入一个新行
O
# → 替换从光标所在位置后到一个单词结尾的字符
cw

模式切换

1
2
3
4
5
6
# 进入编辑模式
i
# 进入命令模式
esc
# 退出编辑模式(回到Normal模式)
esc

删除

1
2
3
4
# 删当前光标所在的一个字符。
x
# 删除当前行,并把删除的行存到剪贴板里
dd

复制粘贴

1
2
3
4
5
6
# 粘贴剪贴板,p是表示在当前位置之后
p
# → 粘贴,P表示在当前位置之前
P
# → 拷贝当前行当行于 ddP
yy

Undo/Redo

1
2
3
4
# → undo
u
# → redo
<C-r>

打开/保存/退出/改变文件(Buffer)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 存盘 + 退出 (:w 存盘, :q 退出)   (陈皓注::w 后可以跟文件名)
:wq
# <path/to/file> → 打开一个文件
:e
# → 存盘
:w
# → 另存为 <path/to/file>
:saveas <path/to/file> → 另存为 <path/to/file>
# → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:x, ZZ 或 :wq
# → 退出不保存
:q!
# 强行退出所有的正在编辑的文件,就算别的文件有更改。
:qa!
# → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(陈皓注:我喜欢使用:n到下一个文件)
:bn 和 :bp

帮助

1
2
# :help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(陈皓注:退出帮助需要输入:q)
:help <command>

终端

1
2
3
4

# bash进入vi模式
# https://linux.cn/article-8372-1.html
set -o vi
CATALOG
  1. 1. 参考资料
  2. 2. Vim 哲学
  3. 3. 概念
  4. 4. 文档声明
  5. 5. 光标操作
  6. 6. 插入
  7. 7. 模式切换
  8. 8. 删除
  9. 9. 复制粘贴
  10. 10. Undo/Redo
  11. 11. 打开/保存/退出/改变文件(Buffer)
  12. 12. 帮助
  13. 13. 终端