vi:visual Interface
vim:VI improved
1. Vim模式
vim有三种模式,分别是编辑模式(命令模式),输入模式,末行模式
模式转换:
编辑->输入
i:在当前光标所在字符的前边,转为输入模式
a:在当前光标所在字符的后边,转为输入模式
o:在当前光标所在行的下边新建一行,转为输入模式
I:在当前光标所在行的前边,转为输入模式
A:在当前光标所在行的后边,转为输入模式
O:在当前光标所在行的上边新建一行,转为输入模式
输入->编辑:ESC
编辑->末行::
末行->编辑:ESC
2. vim打开和关闭的文件
vim file # 文件可以不存在,但文件父目录一定要存在
vim +$ # 打开文件光标处于第$行
vim + # 打开文件,光标处与文件
vim +/pattern # 匹配到第一次被pattern匹配到的行首
关闭文件
末行模式:
wq:保存退出
q:退出
q!:强行退出
w:保存
w!:强行保存
编辑模式:
ZZ:保存退出
3. 移动光标
- 逐字符移动(编辑模式)
h:向左
l:向右
j:向下
k:向上
#h:移动#个字符
- 逐单词移动
w:移至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
#w:移动#个单词
- 行内跳转
0:绝对行首
^:行首的第一个非空白字符
$:绝对行尾
- 行间跳转
G:跳转至第#行
G:跳转至最后一行
末行模式下直接输入行号即可
4. 翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
5. 删除单个字符
x:删除光标所在处的
#x:删除光标所在处及向后的共#个字符
6. 删除命令:d
需要与跳转命令配合使用
#d跳转符:删除跳转符指定范围#个
末行模式:
startline,endline d
.表示当前行
$:最后一行
+N:向后N行
$-N:倒数N行
最后一次删除的内容被复制到缓冲区里,可以复制或撤回
7. 粘贴命令 p
小写p:如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果删除或复制的内容为非整行,则粘贴至所在字符的后边
大写P:如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果删除或复制的内容为非整行,则粘贴至所在字符的前边
8. 复制命令 y(用法与d相同)
9. 修改 c:先删除内容,再转换为输入模式
10. 替换 r(R进入替换模式)
11. 撤销编辑操作 u
u:撤销前一次的编辑操作
连续u命令可撤销此前的n次编辑操作
#u:撤销最近#次操作
撤销最近一次撤销操作:ctrl+r
12. 重复前一次编辑操作 .
13. 可视化模式
14. 查找
/PATTERN (从前向后查找)
?PATTERN (从后往前查找)
n 下一个
N 前一个
15. 查找并替换
末行模式
ADDR1,ADDR2s@PATTERN@string@gi (g:全局 i:忽略大小写)
16. 编辑多个文件
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
:qa 全部退出
17. 分屏显示一个文件
ctrl+w,s 水平拆分窗口
ctrl+w,v 垂直切割一个文件
在窗口间切换光标
ctrl+w,ARROW
:qa 关闭所有窗口
18. 分窗口编辑多个文件
vim -o:水平分割显示
vim -O:垂直分割显示
19. 将当前文件中部分内容另存为另外一个文件
末行模式:w
ADDR1,ADDR2 w /path/to/somewhere
20. 将另外一个文件的内容填充到当前文件中
:r /path/to/somefile
21. 跟shell交互
:!COMMAND
22. 高级话题
- 显示或取消行号
:set number
:set nu
:set nonu
- 显示忽略或区分字符大小写
:set ignorecase
:set ic
:set noingorecase
- 设置自动缩进
:set autoindent
:set ai
:set noai
- 查找到的文本高亮显示或取消
:set hisearch
:set nohisearch
- 语法高亮
:syntax on
:syntax off
23. 配置文件
/etc/vimrc 全局配置文件
~/.vimrc 用户配置文件