Skip to content

Instantly share code, notes, and snippets.

@zxhfighter
Created January 1, 2019 02:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zxhfighter/7cafabda0ecd9bb300d30ef8e1a0b37a to your computer and use it in GitHub Desktop.
Save zxhfighter/7cafabda0ecd9bb300d30ef8e1a0b37a to your computer and use it in GitHub Desktop.
vim cheatsheet

VIM 技巧

永久显示行号

临时显示行号,输入 :set number 或者 :set nu 即可。

永久显示行号,可以如下操作:

  • 编辑:vim ~/.vimrc
  • 输入 G 定位到尾行
  • 输入 $ 定位到尾行末尾
  • 输入 i 或者 a 进入编辑模式
  • 最后一行输入 set nu 即可

下次使用 vim 打开文件就会自动显示行号。

关闭行号

当然,有时候需要关闭行号,此时输入 :set nonu 即可。

快速定位

  • 回到文件开始位置:gg
  • 回到文件末尾行:G
  • 回到行首:^ 或者 0
  • 回到行尾:$
  • 回到第 n 行::n

搜索定位

有时候需要搜索某个词,进行修改,此时需要定位到某个词,可以采用搜索。

搜索使用 /text,按 n 键查找下一个,N 键查找上一个,找到后使用 i 可以进入编辑模式。

如果不想输入该单词,光标移动到单词上(还是先需要定位到这个词啊),可以输入 * 或者 # 开启快速查找。

保存

  • :x: 写入文件并退出,仅当文件修改时才写入,否则不会更新文件修改时间
  • :wq: 写入文件并推出,不管文件是否修改,都会更新文件修改时间
  • :q: 不保存退出,如果有修改,会提示 E37: No write since last change (add ! to override)
  • :q!: 强制不保存退出

撤销和重做

撤销上一个操作:u

有时候编辑文件乱了套,想重新开始编辑,可以输入 :e!

删除

删除当前行:dd

删除 m 到 n 行: m,nd(可以显示行号,明确知道行号一切就好办了)。

替换

内部使用了 sed 命令进行替换。

  • 替换文件所有行匹配:%s/old/new,等同于 %s/old/new/g
  • 替换当前行第一个匹配:s/old/new
  • 替换当前行所有匹配:s/old/new/g
  • 第 m 行和 n 行前添加 4 个空格::m,n s/^/ /g
  • 删除所有行尾空格:%s/\s\+$//
  • 去掉所有注释:%s!\s*//.*!!
  • 将所有不包含字符(空格也不包含)的空行删除:g/^/s*$/d

快速历史命令

输入 :,然后按上下箭头可以选择历史执行过的命令,很是方便快捷。

参考

https://www.cnblogs.com/momofan/p/5936203.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment