vim

作者 chris.Yun 日期 2018-08-22
vim

vim配置方案:下载地址

vim ~/.vimrc

我的配置文件:配置文件

标签页命令

命令 说明
vim -p file1 file2 将多个文件使用标签打开
:tabn/:tabp 切换标签
:tabnew filename 新建标签页同时打开文件

分屏命令

命令 说明
vim file1 file2 打开多个文件
:n/:N 切换文件
vim -o file1 file2 水平分割窗口
vim -O file1 file2 垂直分割窗口
:qall/wall 关闭/保存所有窗口
:split/:sp/:vsplit/:vsp 水平竖直分割当前窗口
:nsplit/:nsp 水平分割出一个n行高的窗口
crtl + w + h/j/k/l 窗口切换

保存命令

命令 说明
:w file 将编辑的内容写入 file 文件,保持原有文件的内容不变(另存为)
:a,bw file 将第 a 行至第 b 行的内容写入 file 文件
:r file 读取 file 文件的内容,插入当前光标所在行的后面
:e file 编辑新文件 file 代替原有内容
:f file 将当前文件重命名为 file
:f 打印当前文件名称和状态,如文件的行数、光标所在的行号等
:recover 恢复文件 vim -r file

移动命令

命令 说明
:n 光标移到n行
h/j/k/l 左/下/上/右
ctrl+f/b 前后翻页
H/M/L 将光标移到屏幕上的起始行/屏幕中间/屏幕最后一行;2H前两行,3L倒数第三行
0/$ 数字0,左移光标到本行的开始;/右移光标,到本行的末尾
gg 将光标定位到文件第一行起始位置
G 将光标定位到文件最后一行起始位置
NG或Ngg 将光标定位到第 N 行的起始位置

搜索命令

命令 说明
* 当光标停留在一个单词上,*键会在文件内搜索该单词,并跳转到下一处
# 当光标停留在一个单词上,# 在文件内搜索该单词,并跳转到上一处
/str1 正向搜索字符串 str1
n 继续搜索,找出 str1 字符串下次出现的位置
N 继续搜索,找出 str1 字符串上一次出现的位置
?str2 反向搜索字符串 str2

删除命令

命令 说明
d/x 删除行/删除单个字符
dd 删除光标所在行,并去除空隙
ndd 删除(剪切) n 行内容,并去除空隙
nx 删除光标所指向的往后 n 个字符(含当前)
d$ 从当前光标起删除字符直到行的结束
d0 从当前光标起删除字符直到行的开始
J 删除本行的回车符(CR),并和下一行合并

复制粘贴命令

命令 说明
p/P 将缓冲区的内容粘贴到光标的后面/前面
yy 复制当前行到内存缓冲区
nyy 复制 n 行(往后)内容到内存缓冲区

撤销命令

命令 说明
u 撤消前一条命令的结果
. 重复最后一条修改正文的命令(执行一下是对u的撤销)
Ctrl+r 恢复上一步被撤销的操作

正则表达式命令

| ^                            | 放在字符串前面,匹配行首的字 | 
| $                            | 放在字符串后面,匹配行尾的字 | 
| \<                           | 匹配一个字的字头 | 
| \>                           | 匹配一个字的字尾 | 
| .                            | 匹配任何单个正文字符 | 
| [str]                        | 匹配 str 中的任何单个字符 | 
| [^str]                       | 匹配任何不在 str 中的单个字符 | 
| [a-b]                        | 匹配 a 到 b 之间的任一字符 | 
| *                            | 匹配前一个字符的 0 次或多次出现 | 
| &                            | 匹配所有 | 
| \r                           | 换行 | 
| \                            | 转义后面的字符 | 
| /str1/                       | 正则搜索 | 
| :%s/str1/&/gn                | 正则统计 | 
| :%s/str1/str2/g              | 带g表示所有字符串都替换,不带g只替换首次出现,带%表示全部文本 | 
| :m,n s/str1/str2/g           | 将从m行到n行的str1替换成str2 m,$ 从m行到最后一行 | 
| :3d                          | 删除 3 行 | 
| :/str1/,/str2/d              | 删除从字符串 str1 到 str2 的所有行 | 
| :g/^\(.*\)$\n\1$/d           | 删除连续相同的行,保留最后一行 | 
| :g/\%(^\1$\n\)\@<=\(.*\)$/d  | 删除连续相同的行,保留最开始一行 | 
| :g/^\s*$\n\s*$/d             | 删除连续多个空行,只保留一行空行 | 
| :5,20s/^#//g                 | 删除5到20行开头的 # 注释 通过替换达到删除的目的 | 

全局设置

命令 说明
:set option 设置选项 option
autoindent 设置该选项,则正文自动缩进
ignorecase 设置该选项,则忽略规则表达式中大小写字母的区别
number 设置该选项,则显示正文行号
ruler 设置该选项,则在屏幕底部显示光标所在行、列的位置
tabstop 设置按 Tab 键跳过的空格数。例如 :set tabstop=n,n 默认值为8
mk 将选项保存在当前目录的 .exrc 文件中