vim文本编辑器不同于nano的是其功能非常强大,强大的功能还支持各种快捷键,让我们编辑文本的时候更方便更快捷。
本文将会按照下图所展示的功能来对命令一一讲解,
-
打开文件:
vim file:直接打开文件file
vim +# file:打开文件后光标在第#行显示
vim +/partern:打开文件后,直接让光标在第一个被partern匹配到的行的行首处显示
vim + file:直接打开文件,光标在最后一行显示
vim -b file:二进制的方式打开文件
vim -d file1 file2…..:比较多个文件
vim -m file:只读方式打开
vim -e file:打开文件后直接进入编辑模式
注意:如果文件存在,则直接打开显示的内容,如果文件不存在,则在编辑完成之后在末行模式输入wq或者x保存文件时才会写入到硬盘中。
-
编辑界面:
vim 进入到文本界面后,我们首先进入的命令模式,在这个界面我们通常需要重复的切换三个模式来进行编辑操作,下面我们来介绍下VIM的三种主要模式及互相的切换方法。
命令模式:可以使用快捷键移动光标,复制,粘贴,删除或替换字符等操作
插入模式:此时我们可以编辑文本,修改文本中的内容
末行模式:可以执行,替换,删除 ,保存退出等操作
各个模式之间的切换方法:
命令模式 —–(:)—–> 末行模式
命令模式 -[iIaAoO]–> 插入模式
插入模式—(ESC)—-> 命令模式
插入模式–(ESC)(:)—> 末行模式
末行模式—-(ESC)—> 命令模式
末行模式-(ESC)[iIaAoO]-> 插入模式
【iIaAoO】插入模式详解:
i:在光标所在处插入要输入的内容
I:在光标所在处的行首插入要输入的内容
a:在当前光标所在处的后面插入要输入的内容
A:在当前光标所在处的行尾插入要输入的内容
o:在当前光标所在行的下一行的行首插入要输入的内容(新建行)
O:在当前光标所在行的上一行的行尾部插入要输入的内容(新建行)
-
关闭文件:
在末行模式下输入:
q:退出
q!:强制退出
wq:保存退出
x:保存退出
r /path/to/somefile:读file到文本中
w /path/to/somefile:读当前文本中的内容到file中
!command:命令的输出会在执行vim命令之前的窗口显示
r!command:命令的输出结果会在文本中显示
命令模式:
ZZ:保存退出
ZQ:退出不保存
vim编辑器的命令分类:光标移动和跳转、命令模式、文本编辑、地址定界、查找及替换、可视化编辑、文本块选择,多文件模式。
-
光标移动和跳转命令:
行间跳转:
#G:将光标移动到第#行的行首
1G:将光标移动到第一行的行首 gg也可
G :将光标移动到最后一行的行首
^:移动到行的第一个单词首部
$:移动到行的最后一个单词尾部
0:移动到行首部
单词间跳转: web
w:向后移动到下一个单词的行首
e:向后移动到下一个单词的行尾
b:向前移动到下一个单词的行尾部
段落间跳转:
}:向下移动到下一段的行首
{:向上移动到上一段的行首
句子间跳转:
):下一句
(:上一句
当前页跳转:
L:页面尾部 —low
M:页面中间 —middle
H:页面首部 —head
按屏幕跳转:fb
ctrl+b:向前移动一屏
ctrl+f:向下移动一屏—-和more less 快捷键一致
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
上下左右移动:
h:向左
j:向下
k:向上
l:向右
-
命令模式相关命令:
.:重复上一次操作,#. 重复前一个操作n次
u:撤销上一次的操作,也可#u
ctrl+r:撤销撤销
U:撤销当前光标在此行的所有操作
x:删除当前光标所在的字符,向后删,也可以#x
r:按下r在按下要替换的字符即可替换
R:直接进入替换模式,此时可以直接当光标所在处需要替换的字符,与r的区别是r每替换一次则需要按一下r。
D:从当前光标开始删除至行尾部同d$
~:字符大小写转换,小转大,大转小
xp: 交换光标所在处的字符及其后面字符的位置
删除:dd删除整行,d^ 从当前字符开始删除到行首,同理d$,d0,d[web],#dd(向后删除#行,包括当前行)
改变:cc删除整行,和dd的区别主要时执行完cc操作后直接由命令模式进入插入模式,选项同d类似。
复制:yy复制整行,y^–>p 从当前字符开始复制到行首并粘贴,同理y$,y0,y[web],#yy(向后复制#行,包括当前行)
粘贴:p:如果粘贴的是整行,则粘贴在当前光标所在行的下方,否则粘贴当前光标所在处的前方。
P:如果粘贴的是整行,则粘贴在当前光标所在行的上方,否则粘贴当前光标所在处的前方。
应用小技巧:100+i+naruto+esc,在光标所在处插入100个naruto
-
地址定界相关命令:(在末行模式下,配合编辑命令使用,如y、d、w,r等)
%:全文
.:当前行
$:最后一行
a,b:a行开始到b行结束
a,+#:a行开始到下面#行结束
/root/,/user/:从第一个匹配到的root开始,到第一个匹配到user的结束
#,/root/:从第#行开始,到第一次匹配到root结束
/root/,$:从第一次匹配到的root开始到最后一行结束
-
查找相关命令:
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
向上查找匹配到的字符:N
向上查找匹配到的字符:n
-
查找并替换相关命令:
vim的末行查找并替换的功能与前面接触过的sed命令类似。
格式:地址定界s@要查找的内容@要替换的内容@ig
要查找的内容:可以使用正则表达时的匹配模式
替换的内容:不能使用模式,只能使用引用功能 \1,\2,还可以使用&,来查找匹配前面匹配到的字符。
g:全局替换,默认情况下,每一行只替换第一次匹配到的
i:忽略大小写
gc:全局替换,替换时交互式询问
-
可视化模式:在windows中我们通常可以用鼠标选择文章的某一部分内容,linux也可以实现。
v:可以按字符选择,配合上下左右键来选择需要的内容
V:可以按行选择
-
多文件模式
多文件模式:vim file1 file2 file3 ……..
:next 下一个 :prev 前一个
:first 第一个 :last 最后一个
-
使用多个文件分割:
-
单文件窗口分割:
-
定制vim的工作特性:
:qall 保存退出 :wqall 保存所有退出 :wall 保存所有
vim -o|O:水平或者垂直分割文件显示
各个窗口间切换方法:ctrl+ww 或ctrl+w+向上下左右箭头
ctrl + w,s 水平分割 (split水平)
ctrl + w,v 垂直分割 (vertical垂直)
ctrl + w,q 取消相邻窗口 quit退出
ctrl + w,o 取消全部窗口 gameover
全局:/etc/vimrc
个人:~/.vimrc
我们也可以通过在末行模式输入相关命令来对vim编辑器进行设置:
行首显示行号:
显示:set nu
取消:set nonu
括号成对匹配:
匹配:set sm
取消:set nosm
自动缩进
启用:set ai
取消:set noai
高亮搜索
启用:set hlsearch
取消:set nohlsearch
忽略字符的大小写
启用:set ic
禁用:set noic
文本格式
启用:fileformate=unix
禁用:fileformate=dos
设置文本宽度
set textwidth=65
set wrapmargin=15
vim寄存器:
vim有26个命令寄存器和1个无名寄存器,常存放不同的剪切板内容,可以不同会话间共享,windows该功能的寄存器就一个,linux中该寄存器的
命名规则为a…z,默认情况下我们使用的是无名寄存器。linux还有10个数字寄存器,用0-9表示,0存放最近复制的内容,1存放最近删除的内
容,当新的文本变更和删除时,1缓存2,2转存3,以此类推,数字寄存器不能在不同会话间共享。
例如:#“tyy 表示复制#行至t寄存器中,tp表示将t寄存器中的内容粘贴
补充:vim中的 \033 –> ctrl +v +[ (同时按)
练习:
1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
:%s@^[[:space:]]\+@@g
2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
:%s@^[[:space:]]\+@#&@g
3、如何设置tab缩进为4个字符?
echo "tabstop=4" >> /etc/vimrc
4、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
:%s@/etc\/sysconfig\/init@\/var\/log@g
5、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;
:%s@^#\([[:space:]]\+\)@\1@
原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/32388