vi使用:
基本模式:
输入模式:
末行模式:
内置的命令行接口
打开文件:
+num:打开文件后,直接让光标处于第num行;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行首;
例如:vim +3 /etc/passwd
vim +/root /etc/passwd
模式转换:
i:insert;在光标所在处插入;
a:append;在光标所在处后面插入;
o:在当前光标所在行的下方打开一个新行;
I:在当前光标所在行的行首输入;
A:在当前光标所在行的行尾输入;
O:在当前所在行的上方打开一个新行;
关闭文件:
:q 退出;
:q! 强制退出,丢弃此前作出的修改;
:wq 保存退出;
:x 保存退出;
:w /PATH/TO/SOMEWHERE
ZZ:保存退出;
快速光标跳转:
字符间跳转:
h:左
j:下
k:上
l:右
num l/k/j/h:一次跳过指定num个字符;
单词间跳转:
w:下一个单词的词首;
e:当前或下一个单词的词尾;
b:当前或前一个单词的词首;
num w/e/b:由num指定一次跳转单词的数量;
行首或行尾跳转:
^:跳转至光标所在行行首的第一个非空白字符;
0:跳转至光标所在行行首;
$:跳 转至光标所在行行尾;
行间移动:
num G:跳转至由num指定的行;
G:跳转至最后一行;
1G或gg:第一行;
句间移动:
):跳转至下一句
(:跳转至上一句;
段落间移动:
}:跳转至下一段;
{:跳转至上一段;
vim编辑命令:
字符编辑:
x:删除光标处的字符;
num x:删除光标处起始的num个字符;
xp:交换光标所在处的字符及其后面字符的位置;
替换命令:
r:替换光标所在处的字符,但不改变编辑模式;
删除命令:
d^
d$
d0
dw
de
db
num dw/e/b
dd:删除光标所在整行
num dd:删除光标所在行及以下num行;
粘贴命令:
p:缓冲区中如果存储的为整行,则粘贴至光标所在行的下方。否则,则粘贴至当前光标所在处的后面;
P:缓冲区中如果存储的为整行,则粘贴至光标所在行的上方。否则,则粘贴至当前光标所在处的前面;
复制命令:
y:复制,工作行为与d命令相似;
yy:复制整行;
num yy:包括光标所在行以及向下num-1行;
y$
y0
y^
ye
yw
yb
改变命令:
c:修改
由编辑模式转换为输入模式;
c$
c^
c0
cb
ce
cb
cc:删除并输入新内容;
num cc:
可视化命令:
v:按字符选定;
V:按行选定;
注:经常结合编辑命令使用;
撤销此前的编辑:
u:撤销此前的操作;
num u:撤销指定次数的操作;
撤销此前的撤销:Ctrl+r
重复前一个编辑操作:“.”
翻屏操作:
Ctrl+f:向文件尾部翻一屏;
Ctrl+b:向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
vim的末行模式:
内建的命令行接口:
地址定界:
:start_pos,end_pos
num:具体第num行,例如2表示第二行;
num1,num2:从第num1行起始,到num2行结尾;
num1,+num2:从num1行起始,加上num2表示的行数,以及对num1到num1+num2之间的行所做的操作;
“.”:表示当前光标所在行;
$:最后一行;
%:全文,相当于1$;
/模式1/,/模式2/:从第一次被模式1匹配的行开始,一直到第一次被模式2匹配到的行结束;
使用方式:
后直接跟一个编辑命令;
d
y
w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中;
r /PATH/TO/SOMEWHERE:从指定位置插入指定文件中的所有内容;
查找:
/PATTERN:从当前光标所在处向文件尾部查找;
?PATTERN:从当前光标所在处向文件首部朝朝;
n:与命令同方向
N:与命令反方向;
查找并替换:
s:在末行模式下完成查找替换操作;
s/要查找的内容/替换为的内容/修饰符;
要查找的内容,可使用模式;
替换为的内容:不能使用模式,但可以使用\1,\2...等后向引用符号,还可以使用"&"引用前面查找时查找到的整个内容;
修饰符:
i:忽略大小写;
g:全局替换,默认情况下,每行只替换第一次出现;
练习:
1、复制/etc/grub.conf至/tmp目录,用查找替换命令删除/tmp/grub.conf文件中的行首空白字符;
2、复制/etc/init.d/functions文件至/tmp目录,用查找替换命令将/tmp/functions的每行开头为空白字符的行的行首添加一个#号
多文件模式:
vim FILE1 FILE2 FILE3
:next 下一个文件;
:prev 前一个文件;
:first 第一个文件;
:last 最后一个文件;
:wall 保存所有文件;
:qall 退出所有;
窗口分割模式:
vim -o|-O FILE1 FILE2
-O:垂直分隔;
-o:水平分割;
在窗口间切换:Ctrl+w Arrow
单文件窗口分割:
Ctrl+w,s:split 水平分割;
Ctrl+w,v:verti 垂直分隔;
定制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
原文:https://www.cnblogs.com/swnlsdln/p/10834492.html