linux那些事儿-vim编辑器

关于文本编辑器

Linux下的文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice ……,文本模式下的编辑器有vi、vim(vi的增强版本)……,vi是Linux中默认的编辑器。我们有必要介绍一下vi的用法,以让Linux入门级用户在最短的时间内学会使用它。 而vim作为vi的增强版本,向来有着最好用的IDE之称,这来自于其继承自vi的多样化的编辑体验,以及自身对多种代码的支持。

vi 编辑器

为什么要学会简单应用vi?众所周知,linux中一切皆文件,虽然并非所有文件都是用文本编辑器进行read or write,但一般来说,几乎所有的配置文件都需要用到文本编辑器。vi或vim是Linux中最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远不是图形界面的编辑器能比的。当你没有安装X-windows桌面环境或桌面环境崩溃时,我们仍需要是用字符模式下的编辑器vi,而在进行纯字符编辑时,vi或vim无疑是一个高效的工具。

vi 编辑器的使用方法

如何调用vi

[root@localhost ~]# vi filename

vi 常用的的三种模式

命令模式,用于输入命令; 插入模式,用于编辑文本; 末行模式,用于各种功能的实现。

flowchart LR
a(vi/vim 文件)-->b(命令模式)
b--aio等键-->c(插入模式)
b--:-->d(末行模式)
c--esc键-->b
d--esc键-->b

光标移动

当我们进入vi的命令模式后,我们可以用下面的一些键位来移动光标:

k 向上移动一行 j 向下移动一行

h 向左移动一个字符 l 向右移动一个字符

ctrl+b 向上移动一屏 ctrl+f 向下移动一屏

当然,默认的:向上箭头=向上移动,向下箭头=向下移动,向左箭头=向左移动,向右箭头=向右移动。 我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。

文本内容的删除、复制和粘贴

命令模式是vi或vim的默认模式,无论我们处于其它什么模式,都可以通过ESC键切换过来。 当我们按ESC键后,接着再按下特定的按键组合,可以实现某些功能,如删除、复制和粘贴。

按键 功能
x 删除一个字符
#x 删除几个字符,#表示数字,比如3x
dw 删除一个单词
#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词
dd 删除一行
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行
d$ 删除光标到行尾的内容
J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起

其实删除也带有剪切的意思,当我们删除文字时,可以把光标移动到某处,然后按P^大写^键就把内容贴在光标之前,然后再移动光标到某处,然后再按p^小写^键将内容贴在光标之后。

取决于剪切的内容是整行还是某些字符,在进行粘贴时,也会有所不同,如剪切的是整行,按下p键粘贴时,会在光标行的下方进行粘贴,而如果剪切的是某些字符,则会直接在光标后进行粘贴。

按键 功能
yw 复制一个单词
y#w 复制几个单词,#用数字表示,比如y3w表示复制三个单词
yy 复制一行
#yy 复制多个行,#代表数字,比如3yy 表示复制光标行及光标的下两行
y$ 复制光标到行尾的内容
yG 复制光标到末尾所有行

插入模式(文本的插入)

i 在光标之前插入; a 在光标之后插入;

I 在光标所在行的行首插入; A 在光标所在行的行末插入;

o 在光标所在的行的下面插入一行; O 在光标所在的行的上面插入一行;

s 删除光标位置的一个字符,然后进入插入模式; S 删除光标所在的行,然后进入插入模式;

末行模式下的保存与退出

作为win下notepad的受害者,很多vi编辑器的初学者经常采用错误的方式退出vi,这很可能使得文件的编辑失去作用。正确的保存与退出,需要输入:号,进入末行模式,并按某些按键实现具体的功能。

按键 功能
:w 保存
:w filename 另存为filename
:wq! 保存退出
wq! filename 以filename为文件名保存后退出
q! 不保存退出

恢复修改及恢复删除操作

按ESC键返回命令模式,然后按下u键可以撤消最近的一次修改或删除操作,如果您想撤消多个以前的修改或删除操作,请按多按几次u。这和Word的撤消操作没有太大的区别。

关于行号

有时我们配置一个程序运行时,会出现配置文件X行出现错误 。这时我们要用到行号相关的操作,按下ESC键回到命令模式,然后输入:set nu即可设置显示行号,再次按下:set nonu取消行号显示,并且可按下#G快速跳转第#行。

查找和替换功能

查找

首先,我们要进入ESC键,进入命令模式,我们输入/或?就进入查找模式了。

/word 注:正向查找word,按n键,把光标移动到下一个符合条件的地方,按N键,把光标移动到上一个符合条件的地方。

?word 注:反向查找word,按n键,把光标移动到下一个符合条件的地方,按N键,把光标移动到上一个符合条件的地方。

替换

按ESC键进入命令模式。

按下:s /old/new 注:把当前光标所处的行中的第一个old单词,替换成new

:s /old/new/g 注:把当前光标所处的行中的old单词,替换成new,并把所有old高亮显示;

:%s /old/new 注:把文档中所有行的第一个old替换成new;

:%s /old/newg 注:把文档中所有的old替换成new;

:#,# s /old/new/g 注:#号表示数字,表示从多少行到多少行,把old替换成new。

在这之中,g表示全局查找。

举例说明: 比如我们有一篇文档要修改,我们把光标所在的行,把所有单词the,替换成THE,应该是 :s /the/THE/g 我们把整篇文档的所有的the都替换成THE,应该是 :%s /the/THE/g我们仅仅是把第1行到第10行中的the,替换成THE,应该是 :1,10 s /the/THE/g


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1096485692@qq.com