1、vi(visual interface)/vim(visual interface improved)缩写说明,vim是vi的增强版本
2、它是一款模式化文本编辑器,分为三种模式:(编辑模式、输入模式、末端模式)
⑴编辑模式即命令模式:
⑵输入模式即插入模式:
⑶ 末端模式:
3、模式转换:
⑴从编辑模式切换到输入模式相关按键:
i(insert) | 光标所在位置的左侧插入字符 |
a(append) | 光标所在位置的右侧插入字符 |
o(new line) | 光标所在行下方新建一行 |
I | 光标跳转到光标所在行的行首插入 |
A | 光标跳转到光标所在行的行尾插入 |
O | 光标所在行上方新建一行 |
⑵从输入模式切换到编辑模式相关按键:
按下:ESC键
⑶从编辑模式切换到末行模式相关按键:
输入:(冒号)
⑷从末行模式切换到编辑模式相关按键:
按下:ESC键
连续按两下ESC键(快速切换)
注:输入模式要切换到末行模式只能通过先切换到编辑模式再进入末行模式
4、vim打开方式
⑴直接键入vim命令打开
⑵vim filename打开
[[email protected]_64_104_centos ~]# vi /etc/fstab/dev/vda1 / ext3 noatime,acl,user_xattr 1 1LABEL=lswap swap swap defaults 0 0proc /proc proc defaults 0 0sysfs /sys sysfs noauto 0 0debugfs /sys/kernel/debug debugfs noauto 0 0devpts /dev/pts devpts mode=0620,gid=5 0 0/dev/vdb /data ext3 noatime,acl,user_xattr 1 0
⑶vim +10 filename 打开此文件光标显示在第十行的行首,如果没有指定的这么多行,显示此文件最 后一行行首
[[email protected]_64_104_centos ~]# vi +5 /etc/fstab
⑷vim +/pattern filename 打开此文件光标显示在第一次查找到指定模式内容的行首
[[email protected]_64_104_centos ~]# vim +/sysfs /etc/fstab
5、vim退出方式
:w | 保存文件并继续编辑 |
:q | 有编辑操作不能退出,没有编辑操作可退出 |
:q! | 不保存强制退出 |
:qw | 保存退出 |
:qw! | 保存强制退出 |
:x | 类似qw! |
:ZZ | 类似qw |
6、光标跳转
⑴字符跳转
h | 左 3h:表示向左移动3个字符,以下类似 |
l | 右 |
k | 上 |
j | 下 |
⑵单词间跳转
w | 跳至后一个单词的词首 3w:表示往后跳至后有个词的词首,以下类似 |
e | 跳至当前或后一个单词的词尾 |
b | 跳至当前或前一个单词的词首 |
⑶行内跳转
^ | 跳转至行首的第一个非空白字符 |
0 | 跳转至绝对行首 |
$ | 跳转至绝对行尾 |
⑷行间移动
G | 跳转至行尾,非绝对行尾 |
1G | 跳转至第一行 |
gg | 跳转至行首,非绝对行首 |
GG | 跳转至行尾非绝对行尾 |
⑸句间和段落间移动
) | 句尾 |
( | 句首 |
} | 段尾 |
{ | 段首 |
7、编辑命令
⑴字符编辑、删除、粘贴、:
x | 删除光标所在处的字符,3x表示删除光标所在字符在内的3个字符从左往右 xp:位置调换 |
r | 替换光标所在处的字符 |
d^ | 删除光标所在位置至非绝对词首之间的字符 |
d$ | 删除光标所在位置至非绝对词尾之间的字符 |
d0 | 删除光标所在位置至绝对词首之间的字符 |
dd | 删除光标所在行 |
dw | 删除光标所在单词至后一个单词词首的内容 |
de | 删除光标所在单词至单词词尾的内容 |
db | 删除光标所在单词至单词词首的内容 |
3dd | 删除包括光标所在行内的3行字符 |
p | 完整行:粘贴光标所在行的下一行 非完整行:粘贴光标所在行后面 |
P | 完整行:粘贴光标所在行的上一行 非完整行:粘贴光标所在行前面 |
yy | 复制光标所在行,y+pattern同上 |
c | 改变命令,用法如:cc表示删除光标所在行,等待输入,其它组合同上 |
u | 撤销命令,用法如:3u表示撤销前3次 |
ctrl+r | 恢复撤销操作 |
. | 点号表示重复前一次操作命令功能 |
ctrl+f | 向下翻页 |
ctrl+b | 向上翻页 |
ctrl+d | 向下翻半页 |
ctrl+u | 向上翻半页 |
vimtutor | vim内建教程 |
8、末行命令模式
⑴地址、定界:start_pos,end_pos
例如:1,$从第一行到最后一行
1,100从第一行到100行
2,+12 从第二行往后12行
/etc/:第一次被此模式所匹配到的行;
#,/etc/:从第n行开始到被此模式匹配结束的行
/etc/,/test:从匹配到/etc/模式开始到被匹配到/test/结束
后可跟编辑命令:d, y,w, r
⑵查找
/PATTERN从上往下查询
?PATTERN从下往上查询
⑶查找替换
:s/要查找的内容/要替换的内容/修饰符,修饰符(i:不区分大小写,g当前行所有被查找到的字符)如下例:
:s/etc/test/test/替换当前第一个被查找到的/etc/test为/test
:s/etc/test/test/g替换当前行所有被查找到的/etc/test为/test
:1,100s/etc/test/test/替换当前行到第100行中被查找到的第一个/etc/test为/test
:1,$s/etc/test/test/替换当前行到最后一行中被查找到的第一个/etc/test为/test
:1,$s/etc/test/test/g替换当前行到最后一行所有被查找到的/etc/test为/test
:%[email protected]/etc/[email protected]/test/替换当前所有行第一个被查找到的/etc/test为/test
:%[email protected]/etc/[email protected]/test/g 全局把/etc/test替换成/test
可以使用#或@等特殊字符来代替/
:%[email protected]/etc/[email protected]/test/g=:%s/\/etc/test/\/test/g
9、多文件模式
⑴多文件编辑模式
vim test1,test2,test3
:first | 跳转到第一个编辑页面 |
:prev | 跳转到上一个页面 |
:last | 跳转到最后一个页面 |
:wqall | 保存退出所有 |
:q!all | 不保存退出所有 |
⑵单、多文件窗口分割
vi -o file1,file2,file3水平分割
vi -O file1,file2,file3垂直分割
各文件切换通过ctr+w来切换
⑶定制vim的某些工作特性:只能临时生效
显示行号和禁用行号:set nu / set nonu
括号匹配和禁用括号:set sm / set nosm
自动缩进和取消缩进:set ai / set noai
高亮搜索和取消高亮:set hlsearch / set nohlsearch
语法着色和取消着色:syntax on / syntax off
忽略大小写和不忽略:set ic / set noic
(2) 括号匹配
显示:set sm
禁用:set nosm
(3) 自动缩进:
set ai
set noai
(4) 高亮搜索
set hlsearch
set nohlsearch
(5) 语法着色
syntax on
syntax off
(6) 忽略字符大小写
set ic
set noic