一、扩展命令模式(末行模式):
按“:”进入,在底部屏幕左侧出现一个“:”
常见命令:
w 保存磁盘文件
wq 保存并退出
x 保存并退出
q 退出
q! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
(1)地址定界
#:具体第#行,例如2表示第2行;
#,#:从左侧#表示行起始,到右侧#表示行结尾;
#,+#:从左侧#表示的行起始,加上右侧#表示的个数的行;
.:当前行
$:最后一行
例:.,$-1
%:全文(相当于1,$)
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束;
使用方式:
后跟一个编辑命令(d,y,w,r)
(2)查找:
/PATTERN:从当前光标所在处向文件尾部查找;
?PATTERN:从当前光标所在处向文件首部查找;
n:与命令同方向;
N:于命令反方向;
(3)查找并替换:
s:在末行模式下完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式(可使用正则表达式)
替换为的内容:不能使用模式,但可以使用1,2,...等后向引用符号,还可以使用“&”引用前面查找时查找到的整个内容。
修饰符:
i:忽略大小写
g:全局替换;(默认情况下,每一行只替换第一次出现)
例::1,10s/how/HOW/g 将第1行至第10行中所有的how替换为HOW
:%s//etc/fstab//var/log/g 将全文中所有的/etc/fstab替换为/var/log (""为转义符)
查找替换中的分隔符/可替换为其他字符,例如
s@@@
s###
例如::%s@/var/log@/etc/fstab@g
--------------------------------------------------------------------------------------------------------------------------
二、命令模式:
退出vim:
ZZ 保存退出
ZQ 不保存退出
光标跳转:
字符间跳转:
h:左 l:右 j:下 k:上
#COMMADN:跳转由#指定的个数的字符
例:4j:向下移动三行
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数;
当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
行首行尾跳转:
^ 跳转至行首的第一个非空白字符
0跳转至行首
$ 跳转至行尾
行间移动:
#G 或者扩展命令模式下:# 跳转至第#行
G 最后一行
例如:1G, gg 第一行
句间移动:
) 下一句 (上一句
段落间移动:
}下一段 { 上一段
命令模式翻屏操作:
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
命令模式下字符编辑
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~转换大小写
J 删除当前行后的换行符
替换命令:
r 替换光标所在处的字符
R 切换成REPLACE(替换模式)模式,在光标处输入什么替换什么,按ESC回到命令模式
删除命令:
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw 删除到下一个单词的词首
de 删除到下一个单词的词尾
db 删除到上一个单词的词首
#COMMAND
dd:删除光标所在的行
#dd 多行删除
D: 从当前光标位置一直删除到行尾,等同于d$
复制命令:
y 复制命令
y$ 复制光标所在处至行尾的内容
y0 复制光标所在处至行首的内容
y^ 复制光标所在处至非空行首的内容
yw 复制光标所在处至下一个单词的词首
ye 复制光标所在处至下一个单词的词尾
yb 复制光标所在处至上一个单词的词首
#COMMAND
yy 复制整行
#yy 复制多行
Y:复制整行
粘贴命令:
p 缓冲区存在的如果为整行,则粘贴至当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面;
P 缓冲区存在的如果为整行,则粘贴至当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面。
改变命令:
c:删除后切换成输入模式
c$ 删除当前位置至行尾的内容后,切换到输入模式
c^ 删除当前位置至非空行首的内容后,切换到输入模式
c0 删除当前位置至行首后的内容后,切换到输入模式
cb 删除当前位置至上一个单词词首的内容后,切换到输入模式
ce 删除当前位置至下一个单词词尾的内容后,切换到输入模式
cw 删除当前位置至下一个单词词首的内容后,切换到输入模式
#COMMAND
cc:删除当前行并输入新内容,相当于S
#cc
C:删除当前光标到行尾,并切换成输入模式 相当于c$
替换命令:
r:替换光标所在处的字符,替换为r之后输入的字符。
---------------------------------------------------------------------------------------------------------------------------------
可视化模式:
v:按字符选定
V:按行选定
经常结合编辑命令使用(d,c,y)
撤销此前的编辑:
u(undo):撤销此前的操作;
#u:撤销指定次数的操作;
撤销此前的撤销:
Ctrl+r
重复前一个编辑操作:
.
-------------------------------------------------------------------------------------------------------------------------------
vim多文件模式
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;vertial,垂直分割
保存退出使用:wqall
-----------------------------------------------------------------------------------------------------------------------------
定制vim的工作特性:
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc(不存在,需要自己创建,添加内容set nu)
末行:当前vim进程有效
(1)行号
显示:set number,简写为set nu
取消显示:set nonumber,简写为set nonu
(2)括号匹配
匹配:set showmatch,简写为set sm
取消:set noshowmatch,简写为set nosm
(3)自动缩进
启用:set ai
禁用:set noai
(4)高亮搜索
启用:set hlsearch
禁用:set nohlsearch
(5)语法高亮
启用:syntax on
禁用:syntax off
(6)忽略字符大小写
启用:set ic
不忽略:set noic
------------------------------------------------------------------------------------------------------------------------------
vim自带的练习教程
vimtutor