本文旨在学习vim编辑器的使用
1. vim三种主要模式
![](http://pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvczQuNTFjdG8uY29tL3d5ZnMwMi9NMDAvODIvMEIvd0tpb0wxZEpDQlh3eDBOMkFBSndDV0dzUGo0MDI1LmpwZy13aF81MDB4MC13bV8zLXdtcF80LXNfMTE3MjkxNDI5Ny5qcGc=.jpg)
命令模式(默认模式):移动光标,剪切/粘贴文本等。
插入模式:修改文本
扩展模式:保存,退出等
ESC键:退出当前模式,返回到命令模式
2. vim模式之间转换
命令模式-->插入模式
i: insert, 在光标所在处输入
I:在当前光标所在行的行首 输入
a: append,在光标所在处后面输入
A:在当前光标所在行的行尾 输入
o: 在当前光标所在行的下方打开一个新行
O: 在当前光标所在行的上方打开一个新行
插入模式-->命令模式
按ESC键
命令模式-->扩展模式
按:(冒号)
扩展模式-->命令模式
按2次ESC键或者2次enter
3. 扩展模式、命令模式详解
扩展模式:
按“:” 进入Ex模式
命令:
w 保存文件
wq 保存并退出文件
x 写入并退出,相当于wq
q 退出
q! 强制退出
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 不退出当前文本执行命令
r!command 将命令执行结果打印到当前文本
如:r!ls /boot
r!openssl passwd -1i
地址定界
:start_pos,end_pos
# 具体第#行。例如2 表示第2行
#,# 例如 2,5 表示从第2行起始,到第5行结尾
#,+# 例如2,+3 表示2到5行
. 当前行
$ 最后一行
% 匹配全文
查找并替换
s: 在扩展模式下完成查找替换操作
格式:s/ 要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:
不能使用模式。可以使用\1, \2, ...等后向引用符号;还可以 使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现;
查找替换中的分隔符/ 可替换为其它字符,例如
[email protected]/[email protected]/[email protected]
s#/boot#/#i
命令模式
字符间跳转:
h j k l
#command:跳转由指定的个数的字符
如:5h
单词间跳转:
w:下一个单词的词首
e:当前或下一个单词的词尾
b:当前或下一个单词的词首
#command:由#指定一次跳转的单词数
当前页跳转:
H:页首 high
M:页中间行 middle
L:页低low
行首行尾跳转:
^:跳转至行首的第一个空白字符
0:(数字0)跳转至行首
$:跳转至行尾
行间移动:
#G
G:最后一行
gg:第一行
字符编辑:
x:删除光标处的字符
#x:删除光标处起始的#个字符
xp:交换光标所在处的字符及其后面字符
~:转换大小写
替换命令:(r,replace)
r:替换光标所在处的字符
删除命令: d
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除光标后面的一个字符串。
de:删除光标后面的一个字符串(与dw稍有不同)
db:删除光标前面的一个字符串
#command
dd:删除光标所在行
#dd:删除多行
dgg:删除光标之前的所有行。
dG;删除光标之后的所有行。
D:从光标位置一直删除到行尾。空行不删除。
复制命令: y
y$:
y0
y^
yw
ye
yb
#command
yy:复制行
#yy:复制多行
Y:复制整行
粘贴命令:p
p:小p 粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方
P: 大p粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方
撤销更改:u
u:撤销最近的更改
#u:撤销之前多次更改
U:撤消光标落在这行后所有此行的更改
按Ctrl - r 重做最后的“撤消”更改
查找:
/PATTERN :从当前光标所在处向文件尾部查找
?PATTERN :从当前光标所在处向文件首部查找
命令模式的其他用法:
100iwang [ESC] 复制“wang”100次
可视化模式
允许选择的文本块
v 面向字符
V 面向行
ctrl-v 面向块
突出显示的文字可以被删除,复制,变更,过滤,搜索 / 替换
4.定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:对当前vim进程有效
(1) 行号
显示:set number,简写为set nu
取消显示:set nonumber,简写为set nonu
(2) 括号成对匹配
匹配:set showmatch,简写为set sm
(3) 自动缩进
启用:set ai
禁用:set noai
(4) 高亮搜索
启用:set hlsearch
禁用:set nohlsearch
(5) 语法高亮
启用:syntax on
禁用:syntax off
(6) 忽略字符的大小写
启用:set ic
不忽略:set noic
(7) 文件格式
启用:fileformat=unix
不忽略:fileformat=dos
(8) 设置文本宽度
:set textwidth=65 (vim only)
:set wrapmargin=15
(9) 设置tab键为4个空格长度
[[email protected] ~]# cat ~/.vimrc
set tabstop=4
更详细的使用:
:help option-list
:set or :set all