linux下vi编辑器的使用小结

       自己在使用linux的过程中也摔了不少跟头,总体来说,是因为习惯了windows那种图形化界面,导致自己的思维还停留在Windows编程上,用对待Windows的方式对待linux,不得不说是一个愚蠢的行为。因为直到有一天,我的linux出现了问题,我再也登陆不进去图形界面了,想要进去图形界面必须要更改某目录下的某个配置文件,而我只会用gedit呀,怎么办?学习vi呗。

        Linux 系统下的文本编辑器有很多种,包括图形模式下的gedit、kwrite等,文本模式下的vi、vim、emacs等。其中vi和emacs是Linux系统中最常用的两个编辑器。这篇文章主要介绍vi编辑器。

本文主要从以下内容介绍vi编辑器:vi编辑器的基本用法。包括包括vi的启动与退出、工作模式的切换、光标的移动、屏幕的滚动、文本的插入与删除、复制与粘帖、查找与替换等。

1.vi编辑器的基本用法

       vi编辑器大多数功能仅依赖键盘来完成,这在系统无法打开图形界面时将会十分有用,但它的缺点是命令众多,可能无法一时半会儿完全记住这些命令的名字和用途,大家经常使用就会熟练了。

1.1 vi的启动与退出

  • $vi

      如果在输入vi命令时没有给出文件名,也没有给出任何参数,则此时的命令结果如图1-1所示。

      此时,vi编辑器中所有行都为空,窗口中央给出的是vi编辑器的使用帮助,当用户在vi中输入文本或执行命令时,该帮助信息会自动消失。另外,如果以这种方式打开vi编辑器,在保存文件时,需要指定文件名。


图1-1

  • $vi [parameter] [filename]

在终端输入命令vi,后面接着输入想要创建或编辑的文件名,即可进入vi编辑器。命令结果如图1-2所示。如果vi命令后面所输入的文件不存在,则系统会自动创建一个以该字符串命名的文本文件。

图1-2


       vi打开时还可以带参数,这些参数用于修正文件的打开方式,主要包括如下:

  • $vi -R fllename

      如果只需阅读文件内容而不想对其进行修改时,可以使用这个参数,以防对文件的误操作。

  • $vi -x filename

     该参数可以在文件保存时对其进行加密,以后每次打开都需要输入密钥,否则将出现乱码。

1.2 vi的编辑模式

     vi有3种工作模式:普通模式、编辑模式和命令模式,这3种模式之间可以相互切换,如图1-3所示。


图1-3

1、普通模式

       由Shell进入vi编辑器时,首先进入普通模式。在普通模式下,从键盘输入任何字符都被当作命令来解释。普通模式下没有任何提示符,当输入命令时立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。普通模式下可以输入命令进行光标的移动,字符、单词、行的复制、粘帖以及删除等操作。

2. 编辑模式

      编辑模式用于文本的输入,在该模式下,用户的输入都会被显示在屏幕上,用户输入的任何字符也都会被当做文本的内容保存起来。在普通模式下,输入a(附加命令)、c(修改命令)、i(插入命令)、o(另起新行)、r(取代命令)以及s(替换命令)都将进入编辑模式,此时vi窗口的最后一行会显示“插入”。输入i命令时屏幕上并无变化,但是通过执行i命令,编辑器由普通模式切换为编辑模式。

3.命令模式

命令模式下,用户可以对文件进行一些附加处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式的。在普通模式下输入冒号即可进入命令模式,此时vi窗口的状态行会显示出冒号,等待用户输入命令。用户输入完成后,按回车执行,之后vi编辑器又返回到普通模式下。

1.3 文件的保存和退

       当编辑完毕,需要退出vi编辑器时,可以在命令模式下使用命令退出vi,返回到Shell。

1. 保存退出

       保存退出是指将缓冲区中的内容写入文件,可以使用的命令为wq和x,如图1-8所示。

2. 强行退出

       强行退出是指无条件退出,不把缓冲区中的内容写入文件,所使用的命令为q!。其中感叹号“!”表示不管文件是否被修改,放弃所修改的内容强行退出。

3. 直接退出

直接退出和强行退出的区别是如果文件内容有修改则给出提示,否则直接退出。直接退出使用的命令为q。

1.4 光标移动

       vi编辑器中的很多命令都是基于光标当前位置的。因此,如何移动光标定位到所需要的位置是一项十分重要的工作,下面进行详细介绍。
1. 向前移动字符
       将光标向前移动一个字符可以使用命令为:l、Space键或方向键→。如果在命令前加一个数字n,就是将光标向前移动n个字符。要注意:光标的移动不能超过当前行的末尾,当然如果给出的数字超过当前光标到行末尾的字符个数,那么也只能移到行尾。
2. 向后移动字符
       将光标向后移动一个字符可以使用命令为:h、空格键或方向键←。同上面类似,如果在命令前加一个数字n,就将光标向后移动n个字符,而且光标不能超出行首。
3. 移到下一行
      将光标移到下一行可以用的命令:+、Enter键、j、Ctrl+n或方向键↓。这些命令之间是有差别的,+和Enter键是将光标移到下一行的行首,其余命令仅是移到下一行,所在的列不变。如果下一行比当前光标所在位置还短,则下标到行尾。
4. 移到上一行
     将光标上移一行可以使用的命令:-、k、Ctrl+p或方向键↑。同上面的命令类似,-命令将光标移到上一行行首,而另外3个保持在同一列。
5. 移至行首
     将光标移到当前行的行首使用的命令为0和^。这两个命令在使用时的差别在于命令0是将光标移到当前行的第一个字符,不管它是否为空白符,而命令^将光标移到当前行的第一个非空白符。
6. 移至行尾
     将光标移到当前行的行尾使用的命令为$。光标移至行尾后,停留在最后一个字符上,如果在该命令前加数字n,则光标将下移到n-1行的行尾。
7. 按词前移
     将光标按词前移使用的命令为w和W。这两个命令都是将光标向前移至下一个单词的开头,它们的区别在:命令w搜索词被定义为以标点符号或空白符(如制表符、换行符或空格符)分隔的字母或数字串;而命令W搜索的词被定义为非空白符字符串。
8、按词后移
     将光标后移的命令是b和B,这两个命令都是将光标后移至上一个单词的开头,同样,他们对词的定义是有区别的。
9、移至词尾
     将光标移至当前字符所在词尾的命令是e和E。它们对词的定义与上面的类似。
10、移至指定行
     将光标移至指定行的开头可以用命令如下:

  • :行号
  • 行号G

     注意:第一个命令是在命令模式下执行的,而非普通模式。如果没给出行号要显示行号可以用如下命令显示行号:
          :set number
          :ser nu

1.5 屏幕滚动

      在文件的编辑查看过程中经常涉及屏幕的滚动问题。
      在vi编辑器中,尽管可以使用键盘上的Page Up键和Page Dawn键来完成这些操作,甚至使用方向键↑和↓,但是效率比较低,下面来看看相关屏幕滚动的命令。
1、向后滚动一屏
     使用的命令为:Ctrl+f (滚屏后保留上一屏的最后两行)
2、向后滚动半屏
    使用的命令为:Ctrl+d
3、向前滚动一屏
    使用的命令为:Ctrl+b
4、向前滚动半屏
    使用的命令为:Ctrl+u
5、屏幕定位
    使用命令zz将当前行置为屏幕正中央,使用命令zt会将当前行置为屏幕顶端,命令zb则会将当前行置于屏幕底端。
    将屏幕直接定位于文件第一屏或最后一屏也是经常遇到的问题,命令gg和G可以完成这样的功能,使用完这些命令后,光标会定位到第一屏的第一行或最后一屏的最后一行上。

1.6 文本输入、删除与修改

      文本的输入、删除与修改是文件编辑的基本操作,其中大部分命令会将vi编辑器由普通模式切换为编辑模式,下面来介绍这些命令。
1、插入命令
     文本的插入命令为i和I。其中i是将其后输出的字符插入到当前光标位置之前。命令I是将其后输入的字符插入到当前光标所在行的行首。
2、附加命令
     附加文本的命令为a和A,其中命令a是将其后输入的字符插入到当前光标位置之后,而命令A则是将其后输入的字符追加到当前光标所在行的行尾。
3、另起新行
     另起新行的命令为o和O,其中命令o是在当前行的下面另起一行,命令O是在当前行的上面另起一行。新行创建完后,光标停留在新行行首,等待输入文字。
4、删除字符
     删除字符的命令为x和X。其中命令x删除光标所在处的字符,而命令X删除光标前面的那个字符。如果之前给出一个数字n,则删除由光标所在字符开始向右的n个字符。
5、删除文本对象
     命令dd删除光标所在的行,命令D删除从光标所在位置开始到行尾的所有字符。
字母d可以与光标移动命令组合,例如:

  • d^:从光标位置删至行首,不包括光标位。
  • d$:从光标位置删至行尾,包括光标位,与D作用相同。
  • dG:删除当前行至文件尾的内容。
  • Dgg:删除当前行至文件头的内容。

6、修改命令
     修改文本的命令为c、C和cc,它们的作用是用新输入的文本取代原来的文本,这等价于将原来的文本删除后,利用命令i插入新的文本。
     cw只是修改光标当前位置到词尾的字符,如果要修改整个单词,可以使用命令caw。
     C命令用来修改从光标位置到行尾的文本。如果在前面加一个数字n,那么会把从当前光标位置至当前行下面的n-1行的内容都删除。
     命令cc的功能和C相同,只是修改的范围不同,它修改光标所在的整行内容。
7、取代命令
    取代文本的命令为r和R。其中命令r是用其后输入的单个字符取代光标所在的字符,如果在r前加一个数字n,则用其后输入的单个字符取代光标所在处开始向后的n个字符。
    R命令用其后输入的文本取代光标所在处开始的若干个字符,每输入一个字符就取代原有的一个字符,多出的部分附加在后面。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值