目录
vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vim基本使用
vim有三种模式,分别是命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式
刚启动时,就是命令模式;此时所有键盘动作被识别为命令。
切换模式
-
i 切换到输入模式(从当前位置输入),I在行首第一个非空白字符输入
-
a 在光标后插入,A 在行尾插入
-
o 在当前行后插入新行,O 在当前行前插入新行
-
r 进入替换模式(只替换当前字符后续即为插入模式),R一直为替换模式,直到按
Esc
退出替换模式 -
: 切换到底线命令模式
操作命令
-
dd 删除当前行
-
yy 复制当前行
-
p 粘贴到下一行,P为粘贴到上一行
-
x 删除当前光标所在处的字符,X为删除光标前的字符
-
u undo,撤销操作
-
Ctrl+r redo,重做上一个动作
-
.(小数点) 重复上一个命令
-
J 合并当前行与下一行
-
cw 删除光标至当前当前单词尾的内容,并切换到输入模式
数字、命令组合后会产生更强的功能:
[n]dd #删除当前行向下共n行
d1G #删除第一行至当前行
dG #删除当前行至文件尾(最后一行)
d$ #删除光标到行尾
d0 #删除关闭到行首
[n]yy #复制当前行向下共n行
y1G #复制第一行至当前行
yG #复制当前行至文件尾(最后一行)
y$ #复制光标到行尾
y0 #复制关闭到行首
搜索
在命令行模式下输入/或?进行搜索(查找字符串末尾添加\c为大小写不敏感查找;添加\C为大小写敏感)
-
/<word> 向下搜索单词
-
?<word> 向上搜索单词
-
n 重复前面的搜索(下一个)
-
N 反向重复前面搜索(/时为上一个,?时为下一个)
/a\c # 查找所有a或A
/a\C # 只查找a
光标操作
hjkl分别表示左下上右移动光标
行间操作
-
gg 移动到第一行
-
G 移动到最后一行
-
Ctrl+f 下移一页
-
Ctrl+b 上移一页
-
Ctrl+d 下移半页
-
Ctrl+u 上移半页
-
[N]G 移动到第N行(按行数后,再按G),或者
:N
更方便 -
[N]<enter> 下移N行(先按数字键,再按回车)
行内操作
-
0(数字) 移动到行首
-
^ 移动到行首(第一个非空白字符处)
-
$ 移动到行尾
-
g_ 移动到行尾(最后一个非空白字符处)
-
[N]<space> 后移N个字符(先按数字键,再按空格)
-
w 下一个单词头
-
e 下一个单词尾(若当前不在单词尾部,在跳到当前单词的尾部;否则下一个单词的尾部)
-
f[a] 移到当前行下一个指定字符处(如a)
-
F[a] 移到当前行上一个指定字符处(如a)
输入模式
输入模式就是我们常用的编辑模式,可在命令模式下切换过来(常用i);
按Esc
退出输入模式,切回到命令模式。
底线命令模式
在命令模式下按:
(冒号),进入底线命令模式;按Esc
切回到命令模式。常用命令:
-
q 退出
-
q! 不保存退出(丢弃当前的修改)
-
w 保存
-
w [filename] 数据另存为filename
-
r [filename] 将[filename]内容插入到下一行
替换删除
替换操作:[addr]s/<ori>/<new>/[option]
[addr]表示搜索范围,省略时为当前行:
-
1,[N]
从第一行到N行 -
%
整个文件,同1,$
-
.,$
从当前行到文件尾
[option]表示操作类型,省略时仅对每行第一个匹配进行替换:
-
g 全局替换
-
c 需进行确认
-
i 不区分大小
删除匹配行 :g/<pattern>/d
删除示例
#删除所有空行
:g/^$/d
#多个空格替换为一个空格(+要转义)
:s/ \+/ /g
替换示例
#将当前行第一个a替换为b
:s/a/b/
#将当前行的所有a替换为b
:s/a/b/g
#将每行第一个a替换为b
:%s/a/b
#将整个文件的所有a替换为b
:%s/a/b/g
#将1至3行的第一个a替换为b
:1,3s/a/b/
在源字符串和目的字符串中出现特殊字符,如'/','<','>',','等需要前面加反斜杠\
进行转义
增强功能
多行操作(copy/move/del)
:set paste
:进入粘贴模式,复制内容保持原样,不会自动缩进
在命令行模式下,可以通过N1,N2 <cmd>
来操作多行
-
9,12 copy 16
:9~12行复制到16行后,可简写co
-
9,12 move 16
:9~12行移动到16行后,可简写m
-
9,12 del
:删除9~12行,可简写d
块操作(列)
以多行注释为例:
-
在命令行模式下,按Ctrl+v,进入列模式;
-
通过上下键选择要注释的行;
-
按
I
(大写),进入输入模式; -
输入(如
#12:
)增加的内容; -
按
Esc
,稍等就会发现所有选中行都修改完成。
分屏功能
启动时分屏:
# 上下分屏(横向分屏),N是数字,表示分成几个屏
vim -o[N] file1 file2 ...
# 左右分屏(纵向分屏)
vim -O[N] file1 file2 ...
把光标移到下一个的屏中:Ctrl+W w
关闭分屏
# 关闭当前窗口
Ctrl+W c
# 关闭当前窗口,如果只剩最后一个了,则退出vim。
Ctrl+W q
开启分屏
# 上下分割当前打开的文件。
Ctrl+W s
# 左右分割当前打开的文件。
Ctrl+W v
# 上下分割,并打开一个新的文件。
:sp filename
# 左右分割,并打开一个新的文件。
:vsp filename
配置文件vimrc
vim的全局配置一般在/etc/vim/vimrc
,个人的配置在~/.vimrc
;修改配置文件,增加:
syntax on
set number
set showcmd
set autoindent
set tabstop=4
set shiftwidth=4
set cursorline
set showmatch