Vim 是Linux/Unix平台的一款使用复杂、功能十分强大、且又非常常用的文本编辑器。它有非常多的快捷键、熟练掌握它们,能极大的提高工作效率。
一,选项
Vim 命令自身便集成很多选项,在打开文件时使用:
| 选项 |
用途 |
| +n |
打开定位到指定行 |
| + |
打开定位到最后一行 |
| +/pattern |
打开定位到第一个匹配到的行 |
| -b |
打开二进制文件;:%!xxd 进入编辑模式,%!xxd -r 切换到二进制模式 |
| -m |
只读模式打开 |
| -e |
直接进入ex模式 |
二,命令模式
文件打开后默认进入命令模式,此时可用的快捷键以及对应的功能有:
光标移动
| 快捷键 |
功能 |
h j k l
|
字符间跳转: 5h,5j,5k,5l分别代表向左,下,上,右移动5个字符 |
w e b
|
单词间跳转: 下一个单词的词首; 当前或下一个单词的词尾; 当前或上一个单词的词首 |
H M L
|
页面间跳转: 当前页首; 当前页中; 当前页尾 |
zt zz zb
|
移动光标所在行到: 页首,页中,页尾 |
0 ^ $
|
行内移动: 行首;行首第一个非空白字符;行尾 |
G nG gg
|
行间移动: 最后一行; 第n行; 第一行 |
) (
|
句间移动: 下一句; 上一句 |
} {
|
段落间移动: 下一段; 上一段 |
文本剪辑
| 快捷键 |
功能 |
x |
剪切当前字符 |
p P
|
粘贴到后面/前面 |
J |
删除当前行后的换行符 |
r |
替换 |
R |
替换模式 |
d |
删除,借助定位符(参考光标移动)进行特定删除 |
y |
复制,借助定位符(参考光标移动)进行特定复制 |
d/y/vi"/(/[/{ |
删除/复制/选中符号对里面的内容 |
d/y/vtw |
删除/复制/选中直到下一个指定(此处为w)字符 |
u |
撤销,nu 撤销最近n次操作;ctrl r 取消之前的撤销操作 |
. |
重复,n. 重复上一次操作n次 |
U |
撤销当前行的所有操作 |
i I o O a A |
进入编辑模式 |
: |
扩展模式 |
ZQ |
不保存退出 |
ZZ |
保存退出 |
- 备注:
在命令模式下,vim 同时提供有可视化,寄存器,标记和宏等特性,鉴于本人工作中基本没有用到,在此不做说明,有需要的读者可以自行搜索
三,编辑模式
进入编辑模式后,便可以像其他所有文本编辑器一样,进入内容的插入和修改操作,此种模式下无快捷键可用,编辑完成后可以通过esc或者ctrl c退出进入命令模式
四,扩展模式
保存退出
| 快捷键 |
功能 |
r filename |
读入文件的内容 |
w filename |
将当前内容另存到另一个文件 |
! |
执行shell命令 |
r! |
读入命令的输出 |
w |
保存 |
q q!
|
退出,强制退出 |
地址边界
| 表达式 |
意义 |
n |
指定行 |
n1,n2 |
从 n1 到 n2
|
n1,+n2 |
从 n1 起到n1 + n2之后 |
. |
当前行 |
$ |
最后一行 |
% |
全文 |
/pattern1, /pattern2 |
从 pattern1 匹配行到 pattern2 匹配行 |
查找搜索
| 表达式 |
意义 |
/pattern |
向下搜索 |
?pattern |
向上搜索 |
n |
下一个,命令同方向 |
N |
上一个,命令反方向 |
替换模式
| 表达式 |
意义 |
s###[g/gc] |
将第一对 # 中的内容替换成 第二对 #的内容,g代表整行 c代表询问 |
\n |
后向引用 |
& |
整体引用 |
特性定制
Vim的特性定制可以通过配置文件 /etc/vimrc (全局模式) 或者 ~/.vimrc(用户模式)配置完成,这种设置会永久生效;也可以在扩展模式下临时设置,仅在当前会话有效
| 表达式 |
意义 |
set nu / set nonu |
显示/取消 行号 |
set ic / set noic |
忽略/敏感 大小写 |
set ai / set noai |
自动/非自动 缩进 |
set hlsearch / set nohlsearch |
高亮/非高亮 显示 |
syntax on / syntax off |
语法 高亮/非高亮 |
set fileformat=unix/dos |
设置文本格式 |
set tw = 72 |
设置行宽 |
set cur / set no cur |
显示/不显示 光标所在行 |
set paste / set nopaste |
是否粘贴格式 |
set all |
显示帮助 |
五,多窗口操作
Vim 提供多窗口和多文件操作模式,对操作熟练度要求很高,在此推荐另外一种操作简单而功能强大的命令行复用工具:tmux