linux vim编辑器的使用

vi,vim编辑器,这个是linux系统中带的一编辑器,我比较习惯使用它,也觉得很好用,部分新手刚开始时,可能会觉得特别难用,不过建议还是坚持下去用吧,坚持用一段时间vim,你就会爱上它,这里简单的介绍一下常用的vim功能

在linux 系统,以及unix 系统中,vi 都是自带的编辑器,小巧,而且轻量,并且90%的unix系统,以及类unix系统,都会有。初学者可能会觉得vi编辑器特别难用,其实不然,vi编辑器使用好了,很好用

标题这里还提到了vim,那么它和vi有什么区别呢,简单的来讲,vim是vi的升级版本,完全兼容于vi,vim相于vi来讲,有很多新的特性,其中最特别的一点,就是语法加亮,也就是说vim可以给文字(代码)加上颜色,比如说在写shell 脚本时,里的if和for,会变成黄色,注释会变成蓝色,而写错了,则就不会变色,当然有些代码还是白色的,不要以为是写错,另外一点,就是有的说vim可以多级撤销,而vi只能撤销一级,这个我亲自试验了一下,vi也可以进行多级撤销,并不是一级,这个也许是版本的问题吧,我们先不追究,一般我是使用vim,因为带颜色。还有一点,就是使用vim的话,进入以后,会记录你上次修改文件后,所停留的的地方,也就是说,光标是停留在你上次修改文件所在那一行的行首。而这个,vi是没有的。

下面使用两个图,来看一下vim带颜色的功能

 

vi-1

vim-1

 

下面来讲一下编辑器的使用,这里就直接说了,不管是vi,还是vim,都是一样的

vi编辑器总共有三种模式,分别是命令模式,编辑模式和末行模式。

其中,命令模式,并不是指我们在系统shell中,输入一个命令,按回车后执行,在vi编辑器,命令模式是指,在键盘上按一个按键,或者按键的组合,命令即被执行。

编辑模式,也就是编辑这个文件,这个模式下,键盘所有的输入都会被录入文件中。左下角会显示一个 — INSERT — 或者 — REPLACE — 代表是插入模式,和覆盖模式。

而末行模式,按下冒号 :即可进入,然后输入相应的命令,按回车后执行。比如按下冒号 : ,然后输入 set nu ,再按回车,命令即被执行,这个时候,行号会被显示出来。

在shell中,建入 vi 或者 vim 回车,有的系统只带了 vi,不带 vim,或是执行 vim 提示没有这个命令的话,安装一下即可,使用 vi 或者 vim,后面跟文件名,就是打开相应的文件 (比如:vim /etc/httpd/conf/httpd.conf),即可进入 vi 或者 vim 编辑器。这个时候,是命令模式。可以移动光标,当然在编辑模式下,也可以移动。移动光标有两种方式,一个是使用键盘上的上下左右方向键移动光标,还有一个就是 h j k l 这几个键,分别对应的方向为:

h  向左移动一个字符 ()

j  向下移动一个字符 ()

k  向上移动一个字符 ()

l  向右移动一个字符 ()

 

进入编辑模式,有如下几个命令,区别如下:

i  在光标 左侧 输入字符

a  在光标 右侧 输入字符

o  小写字母 o ,在光标 所在的下一行,添加新行,并输入字符

O  大写字母 O ,在光标 所在上行一行,添加新行,并输入字符

I  大写字母 I ,在光标所在那一行,的行首 输入字符

A  大写字母 A ,在光标所在那行,的行末 输入字符

s  小写字母 s , 删除光标所在的字符,并进入编辑模式

S  大写字母 S , 删除光标所在的那一行,并进入编辑模式

PS:也可以按 Ins 键进入编辑模式,按 Ins 相当于 i ,再次按 Ins 则会成为 REPLACE 模式,和我后面提到的 R 是一样的

进入编辑模式以后,正文输入完了,按一下 Esc 键盘,即可再次回到命令模式。

 

命令模式下的几个编辑类

 

x  删除当前光标所在的字符 (也可使用del键)

dd  删除当前行

yy  复制当前行

10dd  删除当前行和以下的9行,一共删除10行,数字写多少就删除多少行

10yy  复制当前行,以及以下的9行,一共复制10行,数字改多少就复制多少行

p  小写字母p 粘贴,在当前光标所在行的下面粘贴

P  大写字母P 粘贴,在当前光标所在行的上面粘贴

r  替换单个字符,按下 r 后,再按一个字符,将会把光标所在的那个字符,替换为按 r 后紧接着按下的字符

R  一直替换,直到按 Esc 返回命令模式 (相当于进入编辑模式后按 Insert 键)

 

这几个介绍完了,再介绍一些其它常用的命令。

 

移动光标类

 

h  向左移动一个字符 ()

j  向下移动一个字符 ()

k  向上移动一个字符 ()

l  向右移动一个字符 ()

 

也可以使用键盘编辑区域的那个方向键

 

G  将光标移动到文件的最后一行的行首

gg  将光标移动到文件的第一行的行首

Ctrl + f  向后翻一页(也可使用 page down)

Ctrl + b  向前翻一页(也可使用 page up)

H  将光标移动到当前面的第一行

L  将光标移动到当前页的最后一行

0  数字 0 (不可使用小键盘区的数字0) 将光标移动到当前行的前首(也可使用 Home 键)

$  (shift + 4)  将光标移动到当前行的行末 (也可使用 End 键)

PS:这里我说一下,有使用 ssh 工具连接 linux 的,有的 ssh 工具 (ssh secure shell) ,在vi编辑器里面,Home、End、Page up、Page down 键等,全部不能用

 

末行模式类,按 : 进入末行模式(行号为绝对行号)

:set nu  显示行号

:123  将光标移动到第123行,数字写多少,就是移动到多少行

:w  保存文件

:q  退出文件 (若当前文件有改动,则不会退出)

:wq  保存文件,并退出编辑器 (ZZ 两个大写的ZZ,也可以保存并退出文件)

:q!  强制退出编辑器,不保存

:wq!  强制退出,并保存文件

 

:w /root/a.txt  将文件保存到 /root/a.txt 相当于另存为

:wq /root/a.txt  将文件保存到 /root/a.txt ,并退出编辑器,原文件不变,相当于另存为(若文件有改变,则不会退出,需要加 ! 强制退出)

:10w /root/a.txt  将文件的第10行,保存到/root/a.txt,数字写多少,就是保存多少行

:10,20w /root/a.txt  将文件的第10行至第20行,保存到 /root/a.txt

:.w /root/a.txt  将文件当然光标所在行保存到 /root/a.txt

:1,.w /root/a.txt  将文件的第一行至当前光标所在行保存到 /root/a.txt

:.,$w /root/a.txt  将当前光标所在行到文件结尾,保存到 /root/a.txt

 

这里看着好像很复杂,其实不复杂,可以简单的记一下,点 . 代表当前光标所在的行,逗号 , 代表至,多少至多少,$ 代表结尾行。若是要保存的文件(/root/a.txt)已经存在,需要在w后面加上叹号 ! 会覆盖掉原有文件。

:.+5  将光标从当前行向下移动5行

:.-5  将光标从当前行向上移动5行

:r /etc/shells  读取 /etc/shells 文件,并在当前行的下一行插入

:e /etc/shells  关闭当前文件,并打开 /etc/shells 文件(若当前文件被修改,没有保存,则不会执行)

 

查找与替换

在命令行模式建入,然后需要回车执行

/linux  从当前光标所在的地方,开始向下查找 linux 字符,找到后,按 n 继续向下查找,按大写 N (shift + n) 向上查找

?linux  从当前光标所在的地方,开始向上查找 linux 字符,找到后,按 n 继续向上查找,按大写 N (shift + n) 向下查找

:s/linux/unix  将光标所在的行,首次出现的 linux 替换为 unix

:s/linux/unix/g  将光标所在的行,所有 linux 替换为 unix

:10,15s/linux/unix/g  将第10行至行15行,所有的 linux 字符替换为 unix

:%s/linux/unix/g  将文件中所有出来 linux 的字符,替换为 unix 相当于全文件全部替换

 

PS:实用技巧

:1,10s/#//g  将第一行至第10行的 # 注释全部取消

:1,10s/^/#/g  将第一行到第10行添加 # 注释

 

#号 分号 ; 都可以用这种方法替换,可以 C C++ 语言中的 // 该怎么用 vi 去批量注释和取消注释呢

:10,20s#^#//#g  第一行到第10行添加 // 注释

:10,20s#^//##g  取消第一行至第10行的 // 注释

 

猜您喜欢