打开文件:
vim [option]… file…
+# 打开文件后,直接让光标处于第#行的行首
+ 打开文件后,直接让光标处于最后一行
+/pattern 打开文件后直接让光标处于第一个被pattern匹配到的行的行首
模式转换:
编辑模式--->输入模式
i:insert 在光标所在处输入
a: append 在光标所在处后面输入
o: 在当前光标所在行的下方新增一 个新行
I: 在当前光标所在行的行首输入
A:在当前光标所在行的行尾输入
O:在当前光标所在行的上方打开一个新行
c
C
输入模式-->编辑模式
ESC
编辑模式-->末行模式
:
末行模式-->编辑模式
ESC,ESC
关闭文件:
: q 退出
:q!强制退出,不保存并退出
:wq 保存修改并退出
:x,保存并退出
: w/path/to/somewhere
命令模式:ZZ,保存退出
光标移动:
单字符移动:
h: 左
l:右
j:下
k:上
可以和数字组合 例: 5 j
单词间移动:
w:调至下一个单词的词首
b:当前或前一个的词首
e:当前或下一个词的词尾
行内移动:
0:绝对行首
^:第一个非空白字符
$:绝对行尾
行间移动:
#G 跳转至由#指定行
G 最后一行
1G,gg 第一行
句间移动:
)上一句
(下一句
段落间移动:
}上一段
{下一段
编辑命令:
x:删除光标所在处的字符
#x:删除光标所在处向后的#个字符
r:替换光标所在处的字符
xp : 交换光标所在处的字符及后面字符的位置
d:删除命令,可结合光标跳转字符,实现范围删除
d$ 删除光标所在处到行尾
d^ 删除光标所在处到行首(第一个非空白字符)
d0 删除光标所在处到绝对行首
dG 删除光标所在处下方所有的行到末尾
dd:删除一行
#dd:删除所在行后的#行
粘贴命令:
p: 缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至当前光标所在的后面
P: 缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在的前面
复制命令:
y:复制
y$
y0
y^
yy 复制一行
#yy 指定数字复制多行
改变命令:
c:修改
编辑模式---> 输入模式
c$
c^
c0
cc 删除整行并输入新内容
#cc
撤销命令
u:undo
#u:撤销指定次数的操作
撤销此前的撤销
Ctrl+r
重复前一个编辑操作 ' . '
可视化模式:
v:按照光标走过的区域选择
V:选择矩形块
翻屏:
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
Enter:下一行
末行模式:地址定界
start,end
# 具体第#行,例如2表示第2行
#,# 从左侧#表示行起始,到右侧#表示行结尾
#,+# 从左侧#表示的行起始,加上右侧#表示的行数
. 当前行
$ 最后一行
. , $-1
% 全文 相当于1,$
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
使用方式:后跟一个编辑命令
d
y
w /path/to/somewhere 将范围内的行另存至指定文件中
r /path/from/somefile 在指定位置插入指定文件中的所有内容
查找:
/pattern 从当前光标所在处向文件尾部查找
?pattern 从当前光标所在处向文件首部查找
n 与命令同方向
N 与命令反方向
查找并替换:
s: 在末行模式下完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
要查找的内容: 可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2… 等后向引用符号,还可以使用&引用前面查找时查找到的整个内容:
修饰符:
i 忽略大小写
g 全局替换,默认情况下每一行只替换第一次出现
查找替换中的分隔符/ 可替换为其他字符,例如 s@@@ , s###
多文件模式:
vim file1 file2 file3 ...
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出所有文件
:wqall 修改并退出所有文件
窗口分隔模式:
vim -o file1 file2 ... 水平分隔
vim -O file1 file2 ... 垂直分隔
在窗口间切换:Ctrl+w 上下左右箭头
单文件窗口分隔:
Ctrl+w,s split 水平分隔
Ctrl+w,v vertical 垂直分隔
定制vim工作特性:
配置文件: 永久有效
全局:/etc/vimrc
个人:~/.vimrc
末行: 当前vim进程有效
窗口属性的定义:
显示行号
:setnu
:setnonu
自动缩进
:setai
:setnoai
忽略字符大小写
:setic
:setnoic
括号匹配
:setsm (show match)
:setnosm
语法高亮:
:syntaxon
:syntaxoff
高亮搜索:
:sethlsearch
:setnohlsearch
:set nohlsearch 关闭高亮显示,对当前shell有效
练习1:用查找替换命令删除/etc/grub2.cfg文件中的行首的空白字符
%s/^[[:space:]]\+//
练习2:用查找替换命令为/etc/rc.d/init.d/functions文件的每行开头为空白字符的行的行首添加一个#号
%s/^[[:space:]]/#&/