vim编辑器的使用和常用技巧

vim编辑器的使用和常用技巧

vim编辑器的介绍

vim是Linux平台上功能强大基于模式的文本编辑工具,可以用于文本编辑、脚本开发、甚至是程序开发等等应用 场景。
vim相当于gedit(图形化界面的文本编辑器)是难用,因为要记住大量的命令,但是一旦熟练运用后效率高于其他文本编辑工具。

如果想要了解系统上是否已经安装了vim,只需要在终端上输入vim即可,如果安装系统时选择最小化安装,默认vim是没有安装的。
如果终端上能输出vim版本相关的信息,那么就表示系统中已经安装了vim编辑器。退出vim编辑器按:q然后回车即可。
vim编辑器的使用和常用技巧_第1张图片
如果想要了解vim的安装路径,可以使用which命令查看。

[root@ittimeline ~]# which vim
/usr/bin/vim

vim是由 vim-enhanced-7.4.629-6.el7.x86_64 包安装的,可以通过rpm -qf来查询

[root@ittimeline ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.629-6.el7.x86_64

在执行rpm -qf时,还可以将which vim命令的执行结果作为rpm -qf命令的参数

[root@ittimeline ~]# rpm -qf `which vim`
vim-enhanced-7.4.629-6.el7.x86_64

和vim编辑器类似的编辑器还有vi编辑器,它们两者不是同一个软件包,vim是vi(Visual Interface)的加强版。
vi和vim最大的区别就是可以语法加亮,在编辑文本时会给文本增加颜色(和路径相关)。vim完全兼容vi。

查看vi的软件包

[root@ittimeline ~]# rpm -qf `which vi`
vim-minimal-7.4.629-6.el7.x86_64

vim编辑器的基本使用

vim命令的使用方式是 vim [选项] 文件...,其中比较常用的选项有+#和+/pattern。

+#:打开文件后,让光标处于第#行的行首,+默认行尾。

使用vim编辑/root/anaconda-ks.cfg文件,此时光标定位在第十行

[root@ittimeline ~]# vim +10 anaconda-ks.cfg

此时光标默认是选中的第十行
vim编辑器的使用和常用技巧_第2张图片

vi是不支持该选项(+#)

+/pattern:打开文件后,直接让光标处于第一个被PATTERN匹配到行的行首。

使用vim编辑/etc/passwd文件,然后让光标指向/etc/passwd文件中以bin开头的行

[root@ittimeline ~]# vim +/^bin /etc/passwd

此时光标定位在bin开头的行
vim编辑器的使用和常用技巧_第3张图片

使用vim编辑/etc/passwd文件,然后让光标指向/etc/passwd文件中包含FTP的行

root@ittimeline ~]# vim +/FTP /etc/passwd

vim编辑器的使用和常用技巧_第4张图片
搜索包含FTP所在的行

在使用vim编辑器打开文件时,如果不想修改文件,可以使用vim -m file 只读的方式打开文件。

[root@ittimeline ~]# vim -m /etc/passwd

当使用只读模式修改文件时,如果尝试保存文件,此时vim会提示写入被‘write’选项禁用
vim编辑器的使用和常用技巧_第5张图片

当使用vim 打开文件时如果文件存在则会正常打开,如果不存在则会提示新创建文件。

[root@ittimeline ~]# vim guanglei.txt

此时vim会创建guanglei.txt
vim编辑器的使用和常用技巧_第6张图片

如果想要使用vim编辑器同时打开多个文件,可以使用vim -O file1 file2,当执行该命令时左右两边同时打开窗口。
使用ctrl+w在两个文本之间切换。

[root@ittimeline ~]# vim -O /etc/passwd /etc/hosts

vim编辑器的使用和常用技巧_第7张图片
vim同时打开多个文件

想要退出使用:qa可以同时退出两个文件。

如果想要比较多个文件的差异,可以使用命令vim -d file1 file2 ...来实现。

[root@ittimeline ~]# vim -d /etc/fstab  /etc/issue

此时会同时开启来两个文本编辑的窗口,如果想要在左右两边窗口切换,可以先按快捷键Ctrl+w 松手后再按方向键左或者右来切换窗口。
vim编辑器的使用和常用技巧_第8张图片

vim编辑器的模式使用

vim的三种模式以及切换

vim编辑器有三种模式,分别是命令行模式(command mode)、编辑模式(edit mode)、扩展模式(extended command mode)
命令模式是默认模式,主要用于查看文件、移动光标、剪切、粘贴文本,无法输入内容
编辑模式主要用于修改文本
扩展模式主要用于保存退出(:wq)、未修改退出(:q)、强行退出(:q!)等等。

ESC键总是用于退出当前模式,两次ESC键总是返回命令模式。

vim编辑器的使用和常用技巧_第9张图片
vim编辑器的三种模式

  • a、A、o、O、i、I都是可以从命令模式切换成编辑模式
    i:表示在当前字符之前插入(光标前)
    vim编辑器的使用和常用技巧_第10张图片
    I表示在行首插入
    vim编辑器的使用和常用技巧_第11张图片
    a表示在当前字符之后插入(光标后)
    vim编辑器的使用和常用技巧_第12张图片
    A表示在行尾插入
    vim编辑器的使用和常用技巧_第13张图片
    o:表示下一行插入(另起一行)
    vim编辑器的使用和常用技巧_第14张图片
    O表示上一行插入
  • 冒号(:) 进入扩展命令行模式
  • ctrl+v 进入可视块模式

编辑模式按ESC由编辑模式进入到命令模式,扩展命令行模式按ESC进入命令模式。编辑模式没法直接进入扩展命令模式

vim编辑器的命令模式

vim编辑器的使用流程

[root@ittimeline ~]# vim /etc/passwd

首次编辑文件时,默认是命令模式
vim编辑器的使用和常用技巧_第15张图片

vim编辑器的命令模式中常用的命令

x表示删除光标处的一个字符
X表示删除光标前的一个字符
u表示撤销一步骤,每按一次就撤销一次
#x表示删除光标处起始位置的#个字符
~表示转换大小写
J表示删除当前行后的换行符
r表示替换一个字符

ZZ表示保存退出
ZQ表示不保存退出
hjkl 分别表示光标定位的左下上右,也可以使用方向键上下左右实现
0或者home键表示切换到行首,$或者end键表示切换到行尾。
H表示当前屏幕的第一行的行首,L表示当前屏幕最后一行的行首,M表示当前屏幕中间一行的行首。
gg表示快速定位到文档的首行 G表示定位到文档的末行
#gg表示快速定位到第#行
/keyword 查找指定的关键字,如果内容比较多,还可以通过N和n实现向上向下查找,并且vim会对查找的内容进行高亮显示

vim编辑器的使用和常用技巧_第16张图片
关键字查找

取消使用:noh 就可以取消高亮显示
vim编辑器的使用和常用技巧_第17张图片

vim编辑器的编辑模式

如果想要进入编辑模式,使用(a、A、o、O、i、I)键就可以从命令模式切换到编辑模式,编辑完成后如果想要从编辑模式切换成命令模式输入esc退出编辑模式,然后输入冒号(:)即可进入命令模式。
在vim编辑器的编辑模式中有一些常用的命令

x表示向后删除一个字符串,等同于delete
X表示向前删除一个字符
u表示表示撤销一步,每按一次就撤销一次
r表示替换一个字符

vim命令模式下对文本编辑

复制操作:vim编辑器的命令模式下y键表示对单个字符进行复制,以字符为单位,如果要复制整行,用yy(以行为单位),如果想要复制N行,使用Nyy,比如2yy表示复制2行。粘贴使用p键
复制/etc/passwd文件的最后一行,然后粘贴
vim编辑器的使用和常用技巧_第18张图片
删除操作: vim编辑器的命令模式下dd表示删除当前光标所在行,如果想要删除N行,那就要使用Ndd,例如2dd表示删除2行。
vim编辑器的使用和常用技巧_第19张图片
粘贴操作:vim编辑器的命令模式下p表示粘贴复制的内容
剪切操作:vim编辑器的命令模式下dd还能表示剪切,然后使用p能粘贴剪切的内容。
x能删除光标所在位置的字符
D能从光标处删除到行尾。
u是撤销操作。
Ctrl+r还原撤销的操作,将做过的撤销操作再还原回去。

vim编辑器的可视块模式

vim编辑器从命令模式通过ctrl+v切换到可视块模式。可视块模式最典型的应用场景就是实现多行注释

还是以/etc/passwd文件为例

[root@ittimeline ~]# vim  /etc/passwd

首先通过ctrl+v进入可视块模式
vim编辑器的使用和常用技巧_第20张图片

然后光标向上移动,选中倒数五行
vim编辑器的使用和常用技巧_第21张图片

然后按I键进入插入模式,然后输入#(#表示注释)稍等片刻并按ESC退出可视块模式 即可注释倒数5行内容
vim编辑器的使用和常用技巧_第22张图片

如果想要取消之前注释的五行内容,只需要通过ctrl+v进入可视块模式,然后向上移动光标选中五行,然后按d即可删除注释
vim编辑器的使用和常用技巧_第23张图片

vim编辑器的扩展命令模式

文件编辑修改完成后如果需要保存退出,此时需要从编辑模式切换到扩展命令模式,而扩展模式通过冒号(:)就可以切换,切换成扩展模式后通常会输入wq表示存储修改文件的内容并退出vim编辑器。
如果文件是只读文件,必须是root用户操作,可以使用wq!强制保存退出。
例如/etc/shadow文件是只读文件,如果想要强制修改并保存就要使用wq!

[root@ittimeline ~]# ll /etc/shadow
----------. 1 root root 1247 6月  27 16:23 /etc/shadow
[root@ittimeline ~]# vim /etc/shadow

当使用vim编辑/etc/shadow文件时vim会提示修改的是一个只读文件
vim编辑器的使用和常用技巧_第24张图片
将root改成tony后使用wq!强制保存退出
vim编辑器的使用和常用技巧_第25张图片

如果不想保存文件内容并退出vim文件,可以使用q!强制退出,放弃对文件的修改。
如果使用vim编辑模式未修改文件,可以直接使用q退出。

写磁盘退出
vim编辑器的使用和常用技巧_第26张图片
写入磁盘的内容
vim编辑器的使用和常用技巧_第27张图片
强制退出
vim编辑器的使用和常用技巧_第28张图片
文件未被修改
vim编辑器的使用和常用技巧_第29张图片

在vim编辑器的扩展模式中可以使用r filename 将指定的文件内容读取到当前修改的文件中

将/etc/issue文件读取到/etc/passwd文件中
首先查看/etc/issue文件的内容

[root@ittimeline ~]# cat /etc/issue
\S
Kernel \r on an \m

然后使用vim编辑/etc/passwd文件

[root@ittimeline ~]# vim /etc/passwd

此时vim处于命令模式,使用快捷键END跳转到文件的末尾并回车后,按冒号进入扩展命令模式
vim编辑器的使用和常用技巧_第30张图片
然后输入 r /etc/isuse后回车
vim编辑器的使用和常用技巧_第31张图片

此时/etc/issue文件的内容复制到了/etc/passwd文件中
vim编辑器的使用和常用技巧_第32张图片

vim编辑器的扩展模式中。可以通过w filename命令 将当前文件的内容写入到另外一个文件中

将/etc/passwd更改的内容写入到/etc/copy_passwd文件中

:w /etc/copy_passwd

vim编辑器的使用和常用技巧_第33张图片
copy_passwd

查看copy_passwd文件信息

[root@ittimeline ~]# ls -l /etc|grep copy_passwd
-rw-r--r--.  1 root root     2275 6月  27 12:48 copy_passwd

在vim编辑器的扩展命令模式中,如果想要执行其他的命令,可以使用!command 来执行。执行完成后回车就又可以进入编辑模式

在修改/etc/passwd文件时查看当前文件路径
vim编辑器的使用和常用技巧_第34张图片

在修改/etc/passwd文件时查看系统版本信息
vim编辑器的使用和常用技巧_第35张图片

在vim编辑器的扩展命令模式中,如果想要执行其他的命令,并将命令的执行结果写入编辑的文件中,可以使用r!command 实现。

例如将whoami执行的结果写入到/etc/passwd文件中
vim编辑器的使用和常用技巧_第36张图片
r!whoami执行完成后会将root写入到/etc/passwd文件中
vim编辑器的使用和常用技巧_第37张图片

vim编辑器的扩展命令模式实现文本替换

实现/etc/passwd文件中替换第一行到第三行出现第一个bin就替换成ittimeline
替换之前
vim编辑器的使用和常用技巧_第38张图片
替换之后
vim编辑器的使用和常用技巧_第39张图片

如果想要将第一行到第三行中的bin替换为ittimeline,只需要加/g即可,/g表示全部替换
替换之前
vim编辑器的使用和常用技巧_第40张图片
替换之后
vim编辑器的使用和常用技巧_第41张图片

如果把1,3换成3则会替换第三行的内容。

将文本中第三行的bin替换成ittimleine

:3 s/bin/ittimeline

如果想要全文匹配,就可以改成%。

将文本中所有的bin替换成ittimleine

:%s/bin/ittimeline

如果在替换时不需要区分大小写,可以在/g后面跟个i。

将文本中所有的bin替换成ittimleine,并忽略bin的大小写

:%s/bin/ittimeline/gi

vim编辑器的个性化定制

在扩展命令编辑模式中可以通过:set nu来设置行号
vim编辑器的使用和常用技巧_第42张图片
如果想要取消行号,通过:set nonu 来取消设置行号。
也可以通过:noh 取消高亮显示。

需要主要的是:set nu,:set nonu和:noh都是临时的,如果想要永久生效,可以修改/etc/vimrc或者是/.vimrc文件,二者的区别是/etc/vimrc会影响所有的用户,而/.vimrc只会影响当前用户,如果没有该文件则自己新建一个。

[root@ittimeline ~]# vim .vimrc

然后编辑内容set nu保存后退出

查看.vimrc的文件内容

[root@ittimeline ~]# cat /root/.vimrc 
set nu

当再次使用vim编辑/etc/passwd文件时会看到行号的效果
vim编辑器的使用和常用技巧_第43张图片

你可能感兴趣的:(vim编辑器的使用和常用技巧)