Vim编辑器的操作方式

1、Vim编辑器

vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。
文本编辑器种类分为:行编辑器、全屏编辑器、KDE上的编辑器(KWrite, Kate)。行编辑器是指一行一行来编辑处理的工具,如sed。全屏编辑器的编辑空间占据整个屏幕,如nano, vi。
Vim,即Vi IMproved,vim编辑器是vi的增强版,是一种模式化的纯文本编辑器。

2、Vim的基本模式

Vim的基本模式有:编辑模式(命令模式)、输入模式、末行模式(内置的命令行接口)。
编辑模式:也叫命令模式,键盘操作常被理解为编辑命令。
输入模式:在文本文件当中输入内容。
末行模式:vim内置的命令行接口,执行vim的内置命令。
模式转换:
编辑模式:默认模式;
编辑模式 --> 输入模式:
i:insert, 在光标所在处输入;
a: append,在光标所在处后方输入;
o:在光标所在处的下方打开一个新行;
I:在光标所在行的行首输入;
A:在光标所在行的行尾输入;
O:在光标所在处的上方打开一个新行;
输入模式 --> 编辑模式:ESC
编辑模式 --> 末行模式::
末行模式 --> 编辑模式:ESC

删除10~100行:            :10,100d
行首显示行号               :set nu
去掉行号                   :set nonu

3、打开和关闭文件

(1)打开文件
# vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
+:自动处于尾行行首;
(2)关闭文件
ZZ:保存并退出;编辑模式下输入;
:q 退出;
:q! 强制退出,不保存此前的编辑操作;
:wq 保存并退出;
:wq! 强制保存退出;
:w, :q 分开操作也可以实现保存并退出;
:x 保存并退出;
:w /PATH/TO/SOMEFILE 把做出的修改保存至指定文件中,即另存为;

4、Vim的光标跳转

(1)字符间跳转
h:左
j:下
k:上
l:右
#{h|j|k|l}:跳转由#指定的个数的字符;编辑模式;
(2)单词间跳转
w:下一个单词的词首;
e:当前或后一个单词的词尾;
b:当前或前一个单词的词首;
#{w|e|b}:跳转由#指定的个数的单词;编辑模式;
(3)行首行尾跳转
^:跳转至行首的第一个非空白字符;tab键不算,即如果行首为tab+space+abc,则跳至a;
0:跳转至行首;tab键不算,即如果行首为tab+space+abc,则跳至space;
$ :跳转至行尾;tab键不算,即如果行尾为abc+space+tab,则跳至space;
(4)行间跳转
#G:跳转至由#指定的行;
1G, gg:第一行;
G:最后一行;
(5)句间跳转
) 下一句
( 前一句
(6)段间跳转
} 下一段
{ 前一段
(7)翻屏
Ctrl+f:向文件尾翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻

5、vim的编辑命令

(1)字符编辑
x:删除光标所在处的字符;
#x:删除光标所在处起始的#个字符;
xp:交换光标所在处的字符与其后面的字符的位置;
(2)替换命令(replace)
r:替换光标所在处的字符:rCHAR;
(3)删除命令
d:删除命令,可结合光标跳转字符,实现范围删除;
d$ :删除当前光标所在处至行尾的内容;
d^:删除当前光标所在处至行首的内容;
dw:删除当前光标所在处至下一个单词词首的内容;
de:删除当前光标所在处至当前词尾或下一个词尾的内容;
db:删除当前光标所在处至当前词首或前一个词首的内容;
#COMMAND:3dw :向后删3个单词
dd:删除光标所在处的行;
#dd:删除光标所在处的行起始的共#行(包括当前行);
(4)粘贴命令(p, put, paste):刚刚删除的内容可以粘贴在其他位置;
p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
(5)复制命令(yank, y):可以使用p命令到处粘贴;
y:复制,结合光标跳转字符使用,修改跳转范围内的字符,工作行为相似于d命令:y$ ,y^,y0,ye,yw,yb;
#y:复制从当前行向下#行内容;
yy:复制一整行;
#yy:复制#行;
(6)改变命令(change, c):
编辑模式 --> 输入模式,结合光标跳转字符使用,修改跳转范围内的字符:c$,c^,c0,cb,ce,cw。所谓修改就是先删除,再转换为输入模式。
#COMMAND
cc:删除光标所在的行,并转换为输入模式;
#cc:删除#行
(7)撤销(undo)操作:
u:撤销此前的操作;
#u:撤销此前的#个操作,最多50个操作,被保存在缓冲区中;
撤销此前的撤销(恢复此前的撤销操作 recovery):Ctrl+r;
(8)vim可视化模式
v:光标走过的字符;
V:光标走过的行;
经常结合编辑命令使用:d,c,y;

vim自带的练习教程:vimtutor

6、vim末行模式:内建的命令行接口

(1)地址定界

:start_pos[,end_pos]

#:特定的第#行,例如5即第5行;
.:当前行;
$ :最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行;
#,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量,例如:3,+7;
.,$ -1:从当前行到倒数第二行;
1,$ :从第一行到最后一行,全文;
%:全文,相当于1,$ ;
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
#,/pat/:从第#行开始到第一次匹配到pat为止;
/first/,$ 从光标所在处开始first第一次匹配到的行到文件尾部;
/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
可同编辑命令一同使用,实现编辑操作:
d删除地址定界框定的所有内容;
y复制地址定界框定的所有内容;
c修改地址定界框定的所有内容;
w /PATH/TO/SOMEFILE:将选定范围内的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
5r /root/test.txt 将该文件的第5行光标所在处插入/root/test.txt文件
(2)查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:下一个,与命令方向相同;
N:上一个,与命令方向相反;
(3)查找并替换
s:末行模式的命令;使用格式:
s/要查找的内容/替换为的内容/修饰符;
要查找的内容:可使用正则表达式;可以使用模式,基于模式进行文本匹配;
替换为的内容:不能使用正则表达式,但可以使用引用(如\1,\2…等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容);
如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
如果“要查找的内容”部分在模式中没有使用分组符号,也可直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换,而默认情况下,每一行只替换第一次出现的内容;
可把分隔符替换为其它非常用字符:
s@@@
s###

:1,20s/this/This/g                           将1到20行内的每一次this出现都替换成This;
:1,20/this/THIS/ig                           查找时不区分字符大小写,并进行全局替换;
:%s/\/cgroup\/systemd/\etc\/sysconfig/g      路径中的/要做转义,以区别于s的分隔符;
:%s@/cgroup/systemd@/etc/sysconfig@g         将分隔符/替换为@
:%s@\<t\([[:alpha:]]\+\)\>@T\1@g             当文中单词词首为t的单词替换成词首为T
:%s@\<t[[:alpha:]]\+\>@&er@g                 将文中每个以t开头的单词后面都加上er
:%s@^#@@                                     将文中行首的#去掉
%s@\<t\([[:alpha:]]\+\)\>@T\1@g
%s@\<t[[:alpha:]]\+\>@&er@g

7、vim的多文件功能

vim FILE1 FILE2 ...

(1)在文件间切换:
:next:切换到下一个文件;
:prev:切换到上一个文件;
:first:切换到第一个文件;
:last:切换到最后一个文件 ;
(2)退出所有文件:
:wqall 保存所有文件并退出;
:wall 保存所有文件;
:qall 退出所有文件;
(3)多窗口:
-o:水平分割窗口;
-O:垂直分割窗口;
示例:vim -o a.txt b.txt
在窗口间切换:Ctrl+w, ARROW(向上向下向左向右箭头),当前所在窗口标题加粗高亮显示;
(4)单个文件也可以分割为多个窗口进行查看:
Ctrl+w, s:水平分割窗口;
Ctrl+w, v:垂直分割窗口;
wq和q:退出当前窗口;
wqall和qall:退出所有窗口;

8、定制vim的工作特性

注意:在末行模式下的设定,仅对当前vim进程有效,要想永久有效,需要如下配置:
全局:/etc/vimrc
用户个人:~/.vimrc (有可能默认不存在,需要自己创建)

(1)行号
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu
(2)括号匹配高亮
匹配:set showmatch, set sm
取消:set noshowmatch, set nosm
(3)自动缩进
启用:set autoindent, set ai
禁用:set noautoindent, set noai
(4)高亮搜索
启用:set highlightsearch, set hlsearch
禁用:set nohighlightsearch, set nohlsearch
(5)语法高亮
启用:syntax on
禁用:syntax off
(6)忽略字符大小写
启用:set ignorecase, set ic
禁用:set noignorecase, set noic

9、获取帮助

:help
:help subject
例如,获取vim下set命令的帮助::help set

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页