简介

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

参考文档:https://www.runoob.com/linux/linux-vim.html

环境配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cat >> ~/.vimrc << EOF
"设置编码"
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

"显示行号"
set nu

"显示括号匹配"
set showmatch

"设置Tab长度为4空格"
set tabstop=4
"空格替代制表符"
set expandtab
"设置自动缩进长度为4空格"
set shiftwidth=4
"继承前一行的缩进方式,适用于多行注释"
set autoindent

"启动粘贴模式"
set paste

"括号自动补全"
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>O

EOF

常用按键

第一部分:一般模式

移动光标

功能
h, j, k, l 光标向左,下,上,右移动
Ctrl + f / b 屏幕向下/上移动
Ctrl + d / u 屏幕向下/上移动半页
0 移动到一行的最前面
$ 移动到一行的最后面字符
H / M / L 移动到屏幕最上方/中央/最下方那一行的第一个字符
G 移动到文件的最后一行
nG / ngg 移动到文件的第n行
gg 移动到文件的第一行
n[Enter] 向下移动n行

查找替换

功能
/ 向下查找word字符串
? 向上查找word字符串
n 代表重复前一个查找动作
N 代表反向重复前一个查找动作
: s// 将第一个old替换为new
: s///g 将一行中所有的old替换为new
:n1, n2s///g 将行n1与n2之间的word1替换为word2
:%s///g 将文件所有的old替换为new
:%s///gc 替换前要求确认

删除复制粘贴

功能
x/X 向后/前删除一个字符
nx 连续删除n个字符
dd 删除整行
ndd 删除n行
d1G 删除光标所在到第一行数据
dG 删除光标所在到最后一行数据
d$ 删除光标所在到该行最后一个字符
d0 删除光标所在到该行最前面一个字符
yy 复制光标所在的一行
nyy 向下复制n行
y1G 复制光标所在到第一行数据
yG 复制光标所在到最后一行数据
y$ 复制光标所在到该行最后一个字符
y0 复制光标所在到该行最前面一个字符
p/P 粘贴数据在光标下/上一行
J 将光标所在行与下一行数据结合成同一行
u 回撤前一操作
Ctrl + r 重做前一操作
. 重复前一个操作

第二部分:编辑模式

进入插入或替换的编辑模式

功能
i, I 进入插入模式: i从当前光标所在处插入,I在目前所在行的第一个非空格符处插入
a, A 进入插入模式: a从当前光标所在的下一个字符插入,A从光标所在行的最后一个字符后插入
o, O 进入插入模式: o从当前光标所在行的下一行插入新的一行;O正好相反,从上一行插入新行
r, R 进入替换模式: r只会替换光标所在的那一个字符一次;R会一直替换光标所在文字,直到Esc

块选择

功能
v 字符选择,将光标经过的地方反白选择
V 行选择,将光标经过的行反白选择
Ctrl + v 块选择,可以用长方形选择数据
y 将反白的地方复制
d 删除反白的地方

多窗口

功能
:sp filename 打开新窗口,如果有加filename,新窗口打开新文件,否则打开相同文件
Ctrl + w + s/v 水平/垂直分割打开新窗口
Ctrl + w + h/j/k/l 光标移动到左/下/上/右窗口
Ctrl + w + q 退出窗口