实用vim命令大全

vim神器命令大全。工具虽酷,不要深陷其中。

2020年03月08日

目录


基本命令

命令 说明
:e filename 打开新的文件并命名
:w 保存文件
:q 退出Vim
:q! 不保存退出Vim
:x 写入文件(如果文件有修改)并退出
:sav filename 另存文件并命名
. 重复上一次在normal模式中的改变(例如normal模式中增加了几个字,在其他行中用.命令,同样可以增加;在命令行模式中执行命令,用.同样可以使用)
5. 5次重复上一次在normal模式中的改变
shift+A 移动到当前行尾
shift+^ 移动到当前行首(也可以使用0移动到行首)
u 撤销
ctrl+r 恢复撤销

在文件中移动

命令 说明
k or Up Arrow 移动光标向上一行
j or Down Arrow 移动光标向下一行
e 移动光标到word末
b 移动光标到word首
0 移动光标到行首
G 移动光标到文件末
gg 移动光标到文件首
L 移动光标到屏幕末
:59 移动光标到59行
20| 移动光标到20列
% 移动光标匹配大括号
[[ 移动光标到函数始
[{ 移动光标到函数尾

剪切、拷贝、粘贴

命令 说明
y 复制选中的内容到剪切板
p 粘贴剪切板内容
dd 删除当前行
d$ 删除当前行到行尾
yy 复制当前行
y$ 复制当前到行尾
D 剪切当前到行尾

搜索

命令 说明
/word 从顶到底搜索word
?word 从底到顶搜索word
* 搜索光标所在的word
/\cstring 搜索string或者STRING,大小写敏感
/jo[ha]n 搜索john或者joan
/\<the 搜索the,theatre或者then(以the开头),搜索的是单词
/the\> 搜索the或者breathe(以the结尾),搜索的是单词
/\<the\> 搜索the,搜索的是单词
/\/ 搜索字符/
/fred\|joe 搜索fred或者joe
/\<\d\d\d\d\> 搜索四个数字
/^\n\{3} 搜索3个空行
:bufdo /searchstr 在所有打开的文件中搜索
:bufdo %s/something/somethingelse/g 在所有打开的文件中搜索并替换

替换

命令 说明
:%s/old/new/g 替换所有出现的old为new
:%s/old/new/g 替换所有出现的old为new
:%s/old/new/gi 替换所有出现的old为new(大小写不敏感)
:%s/old/new/gc 替换所有出现的old为new(提示确认)
:2,35s/old/new/g 替换所有出现的old为new(从2行到35行)
:5,$s/old/new/g 替换所有出现的old为new(从5行到末行)
:%s/^/new/g 替换行头为new,%代表所有的行
:%s/$/new/g 替换行未为new,%代表所有的行
:s/Bill/Steve/ 替换当前行第一次出现的Bill为Steve,没有百分还为当前行
:s/Bill/Steve/g 替换当前行出现的所有Bill为Steve,没有百分还为当前行
:g/string/d 删除所有包含string的行
:v/string/d 删除所有不包含string的行
:%s/^M//g 删除DOS的carrage returns(^M)
:%s/\r/\r/g 删除DOS的carrage returns(^M)
:%s#<[^>]\+>##g 删除html标签保留文本
:%s/^.*\n\1$/\1/ 删除出现两次的行
ctrl+a 增加光标下数字大小
ctrl+x 减小光标下数字大小
ggvGg? 改变文本为Rot13

大小写

命令 说明
Vu 小写行
VU 大写行
g~~ 反转大小写
vEU 将word转为大写
vE~ 改变word大小写
ggguG 选择所有行为小写
gggUG 选择所有行尾大写
:set ignorecase 设置在选择中忽略大小写
:set smartcase 设置在选择中忽略大小写(如果搜索词为大写)
:%s/\<./\u&/g 设置每个word的首字母为大写
:%s/\<./\l&/g 设置每个word的首字母为小写
:%s/.*/\u& 设置每行的首字母为大写
:%s/.*/\l& 设置每行的首字母为小写

读写文件

命令 说明
:1,10 w outfile 1到10行另存为文件outfile
:1,10 w >> outfile append 1到10行到文件outfile
:r infile 插入infile中的内容
:23r infile 在23行处插入infile中的内容

文件浏览器

命令 说明
:e . 当前目录下打开文件浏览器
:Sex 拆分窗口并且打开文件浏览器
:Sex! 垂直拆分窗口并且打开文件浏览器
:browse e 图形化打开选择新文件(windows系统)
:ls 展示缓存
:cd .. 转到父目录
:args 展示文件路径
:args *.php 打开新文件*.php
:grep expression *.php 返回包含表达式expression的一系列文件
:gf 返回光标所在word对应的filename

和Unix系统交互

命令 说明
:!pwd 执行pwd命令后返回vim
!!pwd 执行pwd命令后插入到文件
:sh 暂时到shell界面(exit可回到vim)

对齐

命令 说明
:%!fmt 对齐所有的行
!}fmt 当前位置对齐所有的行
5!!fmt 对齐接下来的5行

选项卡/窗口

命令 说明
:tabnew 创建一个新的tab
gt 展示下一个tab
:tabfirst 展示第一个tab
:tablast 展示最后一个tab
:tabm n(position) 重新安装tab
:tabdo %s/foo/bar/g 在所有的tab中执行搜索替换
:tab ball 将所有打开的文件放入tab中
:new abc.txt 在下一个窗口中编辑abc.txt

分屏显示

命令 说明
:e filename 在当前窗口编辑filename
:split filename 拆分窗口并且打开filename
ctrl-w up arrow 光标移动到top window
ctrl-w ctrl-w 光标移动到next window
ctrl-w_ 垂直方向最大化当前窗口
ctrl-w| 水平方向最大化当前窗口
ctrl-w= 所有窗口同样大小
10 ctrl-w+ 当前窗口增加10行
:vspilt file 垂直方向拆分窗口并打开file
:sview file 和只读模式下拆分窗口相同
:hide 关闭当前窗口
:only 关闭其他窗口
:b 2 当前窗口中打开#2

自动完成

命令 说明
Ctrl+n Ctrl+p(插入模式) 补全单词
Ctrl+x Ctrl+l 补全行
set dictionary=dict 设定dict为一个目录
Ctrl+x Ctrl+k 补全目录

标记

命令 说明
m{a-z} 标记当前位置为{a-z}
'{a-z} 移动到位置{a-z}}
'' 移动到上一个位置

缩写

命令 说明
:ab mail mail@providor.org 设定mail@providor.org的缩写为mail

文本缩进

命令 说明
:set autoindent 打开自动缩进
:set smartindent 打开智能缩进
:set shiftwidth=4 设置默认缩进大小为4
ctrl-t, ctrl-d 打开/取消缩进模式
>> 缩进
<< un缩进
=% 缩进括号之内的代码
1GVG 缩进整个文档

代码高亮

命令 说明
:syntax on 打开代码高亮
:syntax off 关闭代码高亮
:set syntax=perl 强制代码高亮

复制粘贴

命令 说明
:set paste 粘贴模式
:set pastetoggle=<F11> 设置切换粘贴模式的快捷键为F11

进入命令模式之后,ctrl + r,可以进行粘贴。"是粘贴缓冲内容,%是粘贴当前文件名,/是粘贴最近一次搜索内容,+是粘贴剪切板中的内容。