Vim

闷骚的程序员

移动

以字(符)为单位

功能按键
k
j
h
l

以单词为单位

功能按键
前一个单词尾ge
后一个单词首w
本单词首(已在本词首则跳到前一单词首)b
本单词尾(已在本词尾则跳到后一单词尾)e

以屏幕为单位

功能按键
向下翻页CTRL-f
向上翻页CTRL-b
向下翻半页CTRL-d
向上翻半页CTRL-u
向上一行CTRL-y
向下一行CTRL-e
光标移到屏幕上方H
光标移到屏幕中间M
光标移到屏幕下方L
光标所在位置移到屏幕上方zt
光标所在位置移到屏幕中间zz
光标所在位置移到屏幕下方zb

行号

功能按键
跳到第 num 行:numnumGnumgg

文件

功能按键
跳到文件头gg
跳到文件尾G

编辑

复制

功能按键
复制光标所在单词yiw
复制光标所在行yy

粘贴

功能按键
在光标之后粘贴p
在光标之前粘贴P

剪切

功能按键
剪切选中区域d
剪切光标所在行dd

替换

功能按键
将全文中的 str1 替换为 str2:%s/str1/str2/g
将 1 到 5 行中的 str1 替换为 str2:1,5s/str1/str2/g

大小写

功能按键
将选中内容大小写互换~
将选中内容全转为小写gu
将选中内容全转为大写gU
将当前行变成小写guu
将当前行变成大写gUU
将匹配内容替换为大写:%s/xxx/\U&/g
将匹配内容替换为小写:%s/xxx/\L&/g

注:& 代表正则表达式全部匹配项,另外还有 \1、’\2’、…、\9 代表第 1 到 9 个匹配项。

选择

功能按键
选中上一次选择的区域gv
选中括号内区域vi{vi[vi(

搜索

功能按键
向下查找字符串/str
向上查找字符串?str
查找下一个n
查找上一个N
向下查找光标所在单词*
向下查找光标所在单词#

正则表达式

功能按键
匹配单词左边界\<
匹配单词右边界\>
去重:g/^\(.*\)$\n\1/d

常用

功能按键
删除空行:g/^$/d
撤销/UNDOu
重做/REDOC-r
统计行/单词/字符/字节数g C-g
去掉 UTF-8 BOM:set nobomb
保留 UTF-8 BOM:set bomb

全局

功能按键
退出:q
强制执行!
执行外部命令:!

文件操作

功能按键
打开:e
打开文件对话框:bro e
保存:w
另存为对话框:bro w
查看历史文件列表:ol
查看并打开历史文件:bro ol
重命名当前文件:f filename

vimdiff

功能按键
移动到上一个不同处[c
移动到下一个不同处]c
该差异点使用当前文件的dp
该差异点使用其它文件的do
手动刷新重新比较:diffupdate

Buffer

功能按键
查看 Buffer 列表:ls
转到 Buffer 列表中的下一个 Buffer:bn
转到 Buffer 列表中的上一个 Buffer:bp
转到 Buffer 列表中的 num 号 Buffer:bnum
你之前待过的一个 Buffer:b#
从 Buffer 列表中删除 num 号 Buffer:bdnum

组合命令

可以使用 | 来组合命令,比如 cmd1 | cmd2

代码

功能按键
格式化代码gg=G
去除 1-20 行首的行号:1,20s/^\\s\*[0-9]\*\\s\*//g
展开全部折叠zR
展开当前层级折叠zr
全部折叠zM
当前层级折叠zm
切换折叠/展开za
递归折叠/展开当前大区块zA
折叠当前区块zc
递归折叠当前大区块zC
展开当前区块zo
递归展开当前大区块zO
格式化 json 数据:%!python -m json.tool
缩进当前行>>
反缩进当前行<<

modeline

写法:

 vim: set ft=markdown:
 vim: ft=markdown

// vim: noai:ts=4:sw=4
/* vim: noai:ts=4:sw=4 */

插件

CtrlP

基础按键 C-p

功能按键
刷新列表F5
切换文件/缓冲区/MRUC-f/b
切换全路径搜索/文件名搜索C-d
切换正则表达式模式C-r
上/下一个选项C-k/j
在新标签/垂直分割/水平分割打开文件C-t/v/x
历史选择记录的上/下一条C-p/n
创建文件和它的父路径C-y
标记并打开多个文件C-z C-o
退出 CtrlPC-c

LeaderF

功能按键
打开文件Leader-f
打开缓冲区Leader-b
打开 MRULeader-m(自定义的)
退出C-c
切换模糊查找和正则查找C-r
粘贴C-v
清空输入C-u
上/下一个选项C-k/j
在新标签/垂直分割/水平分割打开文件C-t/]/v
刷新列表F5

vim-table-mode

功能按键
删除列Leader-tdc
删除行Leader-tdd
重新格式化表格Leader-tr

命令行

打开 Vim 时跳转到指定行:

vim +[num] filename

num 表示行号,不填则跳转到文件末尾。

文档信息

Search

    Table of Contents