vim 编程-优雅(二)

511 阅读1分钟

vim 编程-优雅(二)

vim_cheat_sheet_for_programmers_screen-ZAXetY

Vim 常用的有三种模式,但是不能孤立的用,要结合起来用。

Vim 的规则非常简单,但是组合起来非常强大,提供了一套文本编辑的“高级"语言。

Vim 的基本语法:动词 + [数量、介词] + 名词

当然,Vim 语言充满了名词做动词的情况

模式

  • Normal,用来移动和编辑
  • Insert,用来输入
  • Visual/Selection,用来选择编辑块
Esc             Insert -> Normal
i/I/o/O/c/a/A   Normal -> Insert
v / V           Normal -> Visual

按键绑定

jj -> esc
enter -> :
caps lock -> ctrl

移动

Normal mode

常规操作

hjkl        左上下右
w/b/e       按照单词移动
{ }         按照段落移动
%           在闭合的括号之间移动
gg          回到文档最上端
G           回到文档最底端
0           回到行首
$           回到行尾

带上数量

1j          向下移动一行
8j          向下移动八行

移动到某一行

  • :12<enter> 移动到 12 行
  • 12gg 移动到 12 行

搜索移动

  • fa: 向右移动到下一个 a
  • ta: 向右移动到下一个 a 的前一个字符
  • Fa: 向左移动到下一个 a
  • Ta: 向左移动下一个 a 的前一个字符

我常用f/F

除此之外,可以直接按 \ 进入搜索模式,去寻找目标单词或字母

Insert mode

插入模式其实就是其他编辑器的编辑模式,用来输入信息。但是在插入模式中,我们可以直接移动光标、删除等。这进一步增加了 Vim 的灵活性,但是这仅仅是相对而言,移动的次数较少的情况下。

在插入模式下,Vim 的光标移动遵循了一半 Bash shell 的快捷键

Ctrl+p          up
Ctrl+n          down
Ctrl+b          left
Ctrk+f          right
Ctrl+a          行首
Ctrl+h          delete left 1
Ctrl+d          delete right 1
Ctrl+w          delete back 1 work
Ctrl+u          delete back to start of line

我自己操作的时候,常常使用Ctrl+dctrl+b/fCtrl+w/u

Visual mode

可视模式和正常模式的移动基本上是一致的...

页面滑动

窗口移动

zz          把光标置于屏幕中间
ctrl+e      向上移动屏幕
ctrl+y      向下移动屏幕
ctrl+d      向下移动半页
ctrl+u      向上移动半页

我平时使用较多的是 zz

折叠代码块

zc          关闭代码块
zo          打开代码块
za          打开、关闭代码块

我平时使用较多的是 za

编辑

移动和编辑是 vim yyds

Vim 的动词,常常跟操作符搭配

  • d: 删除,不能单独用,得跟后续操作符,比如 dd 是删除一整行,d$ 是删除直到行的末尾
  • c:c 跟 d 类次,但是删除完成后会进入插入模式,常用 cc 删除一行,cw 删除一个单词
  • s: 删除并进入插入模式
  • S: 等同于 cc
  • x: 删除当前光标下的单个字符
  • u: 撤销
  • r: 替换
  • y: 复制
  • p: 粘贴
  • >: 向右缩进, 比如 >> <<
  • <: 向左缩进
  • .: 重复操作

名词,这些东西在 Vim 中成为 Text Object, 推荐使用他们进行操作,这是一种高于hjkl移动的抽象。

w           词(可以做动词)
p           段落(可以做动词)
jk          行(可以做动词)
各种括号、引号等
s           句子

介词

i           表示里面
a           表示外面

常用操作

  • 格式化代码:==
  • 注释代码:gc{c,j,k}
  • 切换 tab:gt{tab的数字}, 1gt

图示

vim-cheat-sheet-en-1-vvIGaL

vim-keyboard-1-Gxx0H3

参考