vi:全名 Visual Interface; vim:全名VI iMproved. 它们都是全屏化、模式化编辑器。
vim有三种使用模式:命令模式、输入模式(编辑模式)、末行模式。
命令模式:使用键盘命令的模式,进行文本内容的编辑。
输入模式(编辑模式):在文本状态下,进行文本内容的编辑。
末行模式:在末行状态下,进行文本内容的编辑。
模式转换:
命令模式——>输入模式:
i:在当前光标字符的前面,转换为输入模式
a:在当前光标字符的后面,转换为输入模式
o:在当前光标字符的下方,新建一行,并进入输入模式
I:当前光标跳转至行首,转换为输入模式
A:当前光标跳转至行尾,转换为输入模式
O:在当前光标字符的上方,新建一行,并进入输入模式
输入模式——>命令模式:
ESC
命令模式——>末行模式:
:
末行模式——>命令模式:
ESC,ESC
vim基本操作技巧:
一、打开单个文件
vim file: 直接打开文件
vim + file:打开文件并跳至最后一行
vim +# file:打开文件并跳至第#行
vim +/PATTERN:打开文件并跳转至第一次被模式PATTERN匹配到的行的行首
二、关闭文件
末行模式下:
:q 关闭文件但不保存
:w 保存文件
:wq 保存并关闭文件
:x 保存并关闭文件
:q! 强制关闭文件但不保存
:wq! 强制保存并关闭文件
:x! 强制保存并关闭文件
命令模式下:
ZZ :保存并退出
三、移动光标
1.逐字符移动
h:左移一个字符
l:右移一个字符
j:向下移一行
k:向上移一行
2.以单词为单位移动
w:移动到下一个单词的行首
e:移动到下一个单词的行尾
b:移动到上一个单词的行首
3.行内跳转
0:跳转至绝对行首
^:跳转至相对行首,即行首的第一个字符所在处
$:跳转到行尾
4.行间跳转
命令模式下:
G:跳转到最后一行
#G:跳转到第#行
末行模式下:
:$ 跳转至最后一行
:# 跳转到第#行
四、翻屏显示
Ctrl+f:向下翻一屏 ## f:front
Ctrl+b:向上翻一屏 ## b:back
Ctrl+d:向下翻半屏 ## d:down
Ctrl+u:向上翻半屏 ## u:up
五、删除
命令模式:
删除字符:
x:删除光标所在处的字符
#x:删除光标所在处及之后的#个字符
删除单词: ## d:delete
#dw:删除从当前光标字符开始到#个单词之后的行首处之间的单词
#de:删除从当前光标字符开始到#个单词之后的行尾处之间的单词
#db:删除从当前光标字符开始到#个单词之前的行首处之间的单词
删除行:
dd:删除当前光标字符所在行
#dd:删除当前行在内向后的#行
末行模式:
:StartADD,EndADDd
.: 表示当前行
$: 最后一行
+#: 向下的#行
-#: 向上的#行
六、复制
复制单词: ## y:copy
y:用法同d命令
复制行:
yy:复制当前行
#yy:复制当前行在内向后的#行
七、黏贴
## p/P:paste
小p:黏贴到当前光标所在处之后,或者下方
大P:黏贴到当前光标所在处之前,或者上方
八、修改
实质是在要修改的位置先删除,后插入 ## c:change
c:用法同d命令
九、替换
## r/R:replace
r:用法同d命令,在命令模式下直接替换
R:进入输入模式,并替换
十、撤销命令模式下的操作
u:撤销上一次的操作
#u:撤销前#次的操作
Ctrl+r:恢复最近一次撤销操作
十一、重复上一次命令模式下的操作
命令模式下:.
十二、可视化模式
v:按字符选取
V:按矩形选取
十三、查找
查找:
末行模式下:
/PATTERN:顺序查找,从前往后查找
?PATTERN:逆序查找,从后往前查找
n:向后移动到下一个PATTERN处
N:向前移动到上一个PATTERN处
查找并替换:
在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi
1,$
%:表示全文
十四、同时编辑多个文件
vim file1 file2 file3
切换:
:next 跳转到下一个文件
:prev 跳转到上一个文件
:first 跳转到第一个文件
:last 跳转到最后一个文件
分屏显示: ## w:windows
Ctrl+w,s 水平显示多个文件 ## s:Simultaneous 平行的
Ctrl+w,v 垂直显示多个文件 ## v:Vertical 垂直的
Ctrl+w,c 关闭分屏显示 ## c:Close
分窗口编辑:
vim -o:水平分割显示
vim -O:垂直分割显示
另存为:
:w /path/to/anotherfile
:StartLine EndLinew /path/to/anotherfile
在当前文件中引入另一文件内容:
:r /path/to/file
十五、与shell交互
:!COMMAND
十六、显示设置
显示/隐藏行号:
:set number 或 :set nu
:set nonu
忽略/区分字符大小写:
:set ignorecase 或 :set ic
:set noic
打开/关闭自动缩进:
:setautoindent 或 :set ai
:set noai
打开/关闭查找到的单词高亮显示:
:set hlsearch
:set nohlsearch
打开/关闭语法高亮:
:syntax on
:syntax off
十七、配置文件
/etc/vimrc
~/.vimrc