vim基本使用
增强功能
基本配置
vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
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为大小写敏感)
/
?
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]
行内操作
0(数字) 移动到行首
^ 移动到行首(第一个非空白字符处)
$ 移动到行尾
g_ 移动到行尾(最后一个非空白字符处)
[N]
w 下一个单词头
e 下一个单词尾(若当前不在单词尾部,在跳到当前单词的尾部;否则下一个单词的尾部)
f[a] 移到当前行下一个指定字符处(如a)
F[a] 移到当前行上一个指定字符处(如a)
输入模式
输入模式就是我们常用的编辑模式,可在命令模式下切换过来(常用i);
按Esc
退出输入模式,切回到命令模式。
底线命令模式
在命令模式下按:
(冒号),进入底线命令模式;按Esc
切回到命令模式。常用命令:
q 退出
q! 不保存退出(丢弃当前的修改)
w 保存
w [filename] 数据另存为filename
r [filename] 将[filename]内容插入到下一行
替换删除
替换操作:[addr]s/
[addr]表示搜索范围,省略时为当前行:
1,[N]
从第一行到N行
%
整个文件,同1,$
.,$
从当前行到文件尾
[option]表示操作类型,省略时仅对每行第一个匹配进行替换:
g 全局替换
c 需进行确认
i 不区分大小
删除匹配行 :g/
删除示例
#删除所有空行
: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/
在源字符串和目的字符串中出现特殊字符,如'/','<','>',','等需要前面加反斜杠\
进行转义
多行操作
:set paste
:进入粘贴模式,复制内容保持原样,不会自动缩进
在命令行模式下,可以通过N1,N2
来操作多行
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
vim的全局配置一般在/etc/vim/vimrc
,个人的配置在~/.vimrc
;修改配置文件,增加:
syntax on
set number
set showcmd
set autoindent
set tabstop=4
set shiftwidth=4
set cursorline
set showmatch