Skip to content

Latest commit

 

History

History
177 lines (118 loc) · 3.82 KB

skills.md

File metadata and controls

177 lines (118 loc) · 3.82 KB

Vim 技巧

使用 Vim 的出厂配置

Vim 是高度可配置的,但为了从零开始,我们还是用出厂配置来学习 vim.

其命令如下:

vim -u NONE -N

其中:

  • 参数 -u NONE 让 Vim 启动时不加载 .vimrc 文件。而 .vimrc 是 Vim 的配置文件,因此该参数保证了定制项和插件被禁用。
  • 参数 -N 指 'nocompatible', 用于防止进入 vi 兼容模式。

Vim 的三种工作模式

  进入文件时                输入 ZZ 退出
  -------------------|   |------------->
                     |   |
                     |   |输入 v 进入
                     |   |-------------> 视图模式(visual)
                     |   |
                    \/   |
   |-------------- 命令模式  <---------- |
   | 输入 i, a, o 等  /\  | 回车         |
   |                 |   |             |
   \/        ESC     |   |  按下 ':'    |
  输入模式  ----------|    |-------> 命令编辑模式
  

删除光标下的字符

对于文本:

This is a line.

命令模式下, 将光标落在需要删除的字符上,按下 x 键,则会将当前字符删除。

例如,当光标落在 T 处,按下 x 键,其结果变为

his is a line.

删除 n 个字符

还是上述文本:

This is a line

命令模式下,若光标落在 T 处,依次按下 5x, 其结果变为

is a line

即:当依次按下 n (n 表示数字) 和 x 时,会删除 n 个字符。

这种组合键具有通用性。

重复执行上次操作

对于文本:

is a line

假设我们上次输入的命令为:5x, 则此时光标会落在 i 处,此时,在命令模式下输入 ., 则会重复执行上次的命令,其结果为:

line

剪贴

  • 剪贴当前行:dd.
  • 剪贴 n 行:n dd.

给文档以层级

对于文本:

task1
a. subtask1
b. subtask2
c. subtask3

可以使用 >G 命令来使层级更明确,在命令模式下,假设此时光标落在 a 处,输入 >G 之后,当前行到末尾处都会有一个缩进,即效果为:

task1
  a. subtask1
  b. subtask2
  c. subtask3

注意区分大小写,是 >G不是>g.

移动

命令模式

  • h/backspace: 左
  • j: 下
  • k: 上
  • l/space: 右
  • w: 以单词为颗粒度进行移动,如果已经到达行尾,则跳转下一行
  • $: 当前行的末尾
  • ^: 当前行的头部
  • shift + g: 移动到文档末尾

命令 i, a, o 的区别

对于文本

This is a line.

若光标落在字符 e 上时,若按下 i, a, o, 均会进入插入模式,但是初始时效果有所不同:

  • i 命令,进入插入模式,光标落在 e 之前
  • I 命令,进入插入模式,光标落在这一行的头部
  • a 命令,进入插入模式,光标落在 e 之后
  • A 命令,进入插入模式,光标落在这一行的尾部
  • o 命令,进入插入模式,新建一行,光标落在新建一行的头部。
  • O 命令,进入插入模式,光标落在前一行的头部。

将落在某一个字符上

复制

  • 复制当前行:yy;
  • 复制多行:n yy, n 表示数字;
  • 复制,从当前光标到当前行结尾:y$.

粘贴 p

撤销 u

反撤销 ctrl + r

选择

对于文本:

hello world

若光标落在 e 上时,按下:

  • viw 可以选中单词 hello, 其含义为 visual in word.
  • ve 可以选中 ello;
  • vw: 可以选中 ello w.

查找

命令模式下按下 / 进入查找模式,输入要查找的字符并按下回车(该模式下支持正则匹配),Vim 会跳转到当前光标向后的第一个匹配上,

随后:

  • n 表示查找下一个;
  • N 表示查找上一个;