三种模式
命令模式(默认) command mode:移动光标,剪切/粘贴文本 插入(编辑)模式 edit mode:修改文本 扩展命令模式 extended command mode:保存,退出等
命令格式
vim [OPTION]... FILE...
OPTION | 解释说明 |
---|---|
+# | 打开文件后,直接让光标处于第#行的行首 |
vim + file | 直接打开file,光标在最后一行 |
+/PATTERN | 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 |
vim –b file | 二进制方式打开文件 |
vim –d file1 file2… | 比较多个文件(可用ctrl+w在各个窗口间移动,打开的三个文件都可以修改,保存需逐个进行) |
vim -m file | 只读打开文件(强制命令!也不好使) |
ex file 或 vim –e | 直接进入仅ex模式(不可视) |
模式转换
命令 | 说明 |
---|---|
ESC | 插入/扩展模式 —-> 命令模式 |
: | 命令模式 —-> 扩展模式 |
CTRL+s,Ctrl+q | 锁定和解锁 |
命令模式–>插入模式
命令 | 说明 |
---|---|
i | insert, 在光标所在处输入(shift+s也可以) |
I | 在当前光标所在行的行首输入 |
a | append, 在光标所在处后面输入 |
A | 在当前光标所在行的行尾输入 |
o | 在当前光标所在行的下方打开一个新行 |
O | 在当前光标所在行的上方打开一个新行 |
ZZ | 保存退出 |
ZQ | 不保存退出 |
## 扩展模式
命令 | 说明 |
---|---|
q | 退出 |
q! | 强制退出,丢弃做出的修改 |
wq | 保存退出 |
x | 保存退出 |
w | 写(存)磁盘文件 |
r filename | 读文件内容到当前文件中 |
w filename | 将当前文件内容写入另一个文件 |
!command | 在编辑文件过程中,临时执行某命令而不需退出文件编辑 |
r!command | 执行某命令,将其结果读入当前编辑文件的光标处后 |
命令模式
光标跳转
命令 | 说明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
#h/l/j/k | 向指定方向跳转#个字符 |
w | 下一个单词的词首 |
e | 当前或下一个单词的词尾 |
b | 当前或前一个单词的词首 |
#w/e/b | 向指定方向跳转#个单词数 |
H | 当前页页首 |
M | 当前页页中间行 |
L | 当前页页底 |
^ | 跳转至行首的第一个非空白字符; |
0 | 跳转至行首 |
$ | 跳转至行尾 |
#G、扩展模式:# | 跳转至由#指定行 |
G | 最后一行 |
1G, gg | 第一行 |
) | 下一句 |
( | 上一句 |
} | 下一段 |
{ | 上一段 |
Ctrl+f | 向文件尾部翻一屏 |
Ctrl+b | 向文件首部翻一屏 |
Ctrl+d | 向文件尾部翻半屏 |
Ctrl+u | 向文件首部翻半屏 |
字符编辑
命令 | 说明 |
---|---|
x | 删除光标处的字符(实际上类似于剪切); |
#x | 删除光标处起始的#个字符 |
xp | 交换光标所在处的字符及其后面字符的位置 |
~ | 转换大小写 |
r | 替换光标所在处的字符 |
R | 切换成REPLACE模式 |
d | 删除命令,可结合光标跳转字符,实现范围删除;(并未真正删除,实际上类似于剪切); |
d$ | 删除到行尾 |
d^ | 删除到非空行首 |
d0 | 删除到行首 |
dw | 删除光标位至下个单词词首 |
de | 删除光标位到本词或下个单词词尾 |
db | 删除光标位到本词或下个单词词首 |
#COMMAND | 删除#指定的内容(如:15d0,表示向前删除本行15个字符,若不足15个字符也不向上扩展) |
dd | 删除光标所在的行 |
#dd | 多行删除 |
D | 从当前光标位置一直删除到行尾,留空行,等同于d$ |
y | 复制yank,行为相似于d命令 |
y$ | 复制到行尾 |
y0 | 复制到行首 |
y^ | 复制到非空行首 |
ye | 复制光标位到本词或下个单词词尾 |
yw | 复制光标位至下个单词词首 |
yb | 复制光标位到本词或下个单词词首 |
#COMMAND | 复制#指定的内容() |
yy | 复制行 |
#yy | 复制多行 |
Y | 复制整行 |
p | 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 |
P | 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面 |
c | 修改后切换成插入模式 |
c$ | 删除当前光标到行尾,并切换成插入模式 |
c^ | 删除当前光标到非空行首,并切换成插入模式 |
c0 | 删除当前光标到行首,并切换成插入模式 |
cb | 删除光标位到本词或下个单词词首,并切换成插入模式 |
ce | 删除光标位到本词或下个单词词尾,并切换成插入模式 |
cw | 删除光标位至下个单词词首,并切换成插入模式 |
#COMMAND | 删除#指定的内容,并切换成插入模式(如:3c0,表示向前删除本行3个字符,若不足15个字符也不向上扩展) |
cc | 删除当前行并切换至插入模式,输入新内容 |
#cc | 删除多行并切换至插入模式,以输入新内容 |
C | 删除当前光标到行尾,并切换成插入模式 |
gU | 变大写 |
gu | 变小写 |
<start position><command><end position> | 对于y/d/gU/gu,可以使用该组合,如0y$,^gU$等; |
100iwang[ESC] | 粘贴 wang 100次 |
u | 撤销最近的更改 |
#u | 撤销之前多次更改 |
U | 撤消光标落在这行后所有此行的更改 |
Ctrl+r | 重做最后的“撤消”更改 |
. | 重复前一个操作 |
n. | 重复前一个操作n次 |
扩展模式
地址定界
地址定界 编辑命令(d/y/w/r) w file: 将范围内的行另存至指定文件中 r file:在指定位置插入指定文件中的所有内容
命令 | 说明 |
---|---|
start_pos,end_pos | |
# | 具体第#行,例如2表示第2行; |
#,# | 从左侧#表示行起始,到右侧#表示行结尾 |
#,+# | 从左侧#表示的行起始,加上右侧#表示的行数 |
2,+3 | 表示2到5行 |
. | 当前行 |
$ | 最后一行 |
.,$-1 | 当前行到倒数第二行 |
% | 全文, 相当于1,$ |
/pat1/,/pat2/ | 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 |
#,/pat/ | 从指定行开始,到第一次匹配pat的行结束 |
/pat/,$ | 从第一次匹配pat的行开始,到最后一行结束 |
查找
命令 | 说明 |
---|---|
/PATTERN | 从当前光标所在处向文件尾部查找 |
?PATTERN | 从当前光标所在处向文件首部查找 |
n | 与命令同方向 |
N | 与命令反方向 |
s/要查找的内容/替换为的内容/修饰符 | 在扩展模式下完成查找替换操作() |
查找替换
s/要查找的内容/替换为的内容/修饰符 (分隔符/可用其他字符替换) 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容 修饰符: i : 忽略大小写 g : 全局替换;默认情况下,每一行只替换第一次出现 gc: 全局替换,每次替换前询问
寄存器
命名/无命名寄存器(a~z表示26个命名寄存器、1个命名寄存器)
26个命名寄存器(a~z表示)和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。未指定,将使用无命名寄存器。 格式: [数字]["寄存器][命令]如: 3"tyy 表示复制3行到t寄存器中 "tp 表示将t寄存器内容粘贴
数字寄存器(0~9表示)
有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。 当新的文本变更和删除时,1转存到2,2转存到3,以此类推。 数字寄存器不能在不同会话间共享。
编辑二进制文件
vim –b binaryfile 以二进制方式打开文件 %!xxd :扩展命令模式下,利用xxd命令转换为可读的十六进制 %!xxd –r:扩展命令模式下,利用xxd命令转换回二进制
可视化模式
该模式允许选择的文本块: v 面向字符 V 面向行 ctrl+v 面向块 可视化键可用于与移动键(如:w,e,b,),},箭头等)结合使用。 突出显示的文字可以被删除d,复制y,变更c,过滤,搜索/替换s等
多文件模式
vim FILE1 FILE2 FILE3 ... :next 下一个 :prev 前一个 :first 第一个 :last 最后一个 :wall 保存所有 :qall 退出所有 :wqall
多“窗口”模式
-
多文件分割
vim -o|-O FILE1 FILE2 ... -o: 水平分割 -O: 垂直分割 在窗口间切换:Ctrl+w, Arrow
-
单文件窗口分割:
Ctrl+w,s : split, 水平分割 Ctrl+w,v : vertical, 垂直分割 ctrl+w,q :取消相邻窗口 ctrl+w,o : 取消全部窗口
定制vim的工作特性
-
配置文件:永久有效
全局:/etc/vimrc 个人:~/.vimrc
-
扩展模式:当前vim进程有效
-
配置项
(1) 行号 显示:set number, 简写为set nu 禁用:set nonumber, 简写为set nonu (2) 括号成对匹配 匹配:set showmatch, 简写为set sm 禁用:set nosm (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) 查看设定 :set 查看当前设定 :set all 查看所有选项
帮助
-
vi/vim内置帮助
:help option-list 进入help的不同主题 :helpgrep word 按关键字查找 :help 查看帮助 :q 退出帮助
-
Vimtutor 练习使用
原创文章,作者:taobaibai,如若转载,请注明出处:http://www.178linux.com/37291