文本编辑器(Vi)及使用方法

发布时间 2023-12-03 22:20:28作者: 飔鬏

可使用的文本编辑器:

  • Emacs——著名的集成开发环境和文本编辑器,被公认为是最受专业程序员喜爱的代码编辑器之一,有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
  • Nano——一种被许多可启动Linux系统以及其他空间有限的Linux环境所使用的流行且简化的文本编辑器。例如在Gentoo Linux安装过程中使用nano编辑文本文件。
  • Gedit——在桌面运行的GNOME文本编辑器。
  • Jed——一种为编程人员开发的面向屏幕的编辑器。通过使用不同颜色,jed可以突出显示所创建的代码,以便开发人员更容易地阅读代码并发现语法。可使用Alt键选择不同菜单来操作文本。
  • Joe——joe编辑器与许多PC文本编辑器类似。使用控制键和箭头键进行移动。单击Ctrl+C进行无保存退出,或者单击Ctrl+X进行保存并退出。
  • Kate——来自kdebase包的外观漂亮的编辑器。它拥有许多附加功能,比如突出显示不同类型的编程语言以及用来管理自动换行的控件。
  • Mcedit——在该编辑器中,可以使用功能键获取、保存、复制、移动和删除文本。与jod和joe一样,mcedit也是面向屏幕的,来自RHEL和Fedora中的mc包。
  • Nedit——极佳的程序员编辑器,需要安装可选的nedit包.
此中内容为特殊补充:

在/etc/passwd文件中修改对应用户的shell路径,可以修改默认使用的shell类型。

[root@fedora32 ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

[root@fedora32 ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root: /usr/bin/bash

将第三方安装的文本编辑器路径添加到shell文档,以便后续查找。

[root@fedora32 ~]# !400 #查看Linux中所有可用的shell

cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh/usr/bin/bash

[root@fedora32 ~]# which nano #查找nano编辑器的路径

/usr/bin/nano

[root@fedora32 ~]# echo /usr/bin/nano >> /etc/shells #将第三方安装的文本编辑器路径添加到shell列表中

[root@fedora32 ~]# !400

cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

/usr/bin/nano

[root@fedora32 ~]# which emacs

/usr/bin/emacs

[root@fedora32 ~]# echo /usr/bin/emacs >> /etc/shells

[root@fedora32 ~]# !400

cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

/usr/bin/nano

/usr/bin/emacs

Vim或vi编辑文本

Vi或vim中的主要操作模式有两种:命令和输入。Vi编辑器通常以命令模式启动。在可以添加或者更改文件中的文本之前,需要输入一条命令,告诉vi你想要做什么。

添加文本

若想进入输入模式,可以输入一个输入命令字母,当完成文本输入之后,单击Esc键(有时需要单击两次)返回到命令模式。

  • a——添加命令。通过该命令,可以从光标的右边开始输入文本。
  • A——在命令结束处添加。通过该命令,可以从当前的末尾行开始输入文本。
  • i——插入命令。通过该命令,可以从光标的左边开始输入文本。
  • I——在命令开始前插入。通过该命令,可以从当前行的开头输入文本。
  • o——在命令之下打开。该命令在当前行之下打开一个新行,并进入插入模式。
  • O——在命令之上打开。该命令在当前行之上打开一个新行,并进入插入模式。

输入内容之后,并单击Enter键,完成输入之后,单击Esc键返回命令模式。

文本中移动

想要在文本中移动,可以使用上、下、左、右箭头键或者h(向左)、l(向右)、j(向下)和k(向上)移动光标。

  • w——将光标移动到下一个单词的开头(用空格、制表符或标点符号分隔)
  • W——将光标移动到下一个单词的开头(用空格或制表符分隔)
  • b——将光标移动到前一个单词的开头(用空格、制表符或标点符号分隔)
  • B——将光标移动到前一个单词的开头(用空格或制表符分隔)
  • 0——将光标移到当前行的开头
  • $——将光标移到当前行的末尾
  • H——将光标移到屏幕的左上角(屏幕上的第一行)
  • M——将光标移到屏幕中间行的第一个字符
  • L——将光标移到屏幕的左下角(屏幕上的最后一行)

删除、复制和更改文本

可以使用以下来删除和更改文本。

  • x——删除光标下的字符
  • X——直接删除光标之前的字符
  • d<?>——删除一些文本
  • c<?>——更改一些文本
  • y<?>——复制一些文本

上述内容中,每个字母后面的<?>确定了可使用移动命令的位置,从而选择删除、更改或者复制的内容。

  • dw——删除(d)当前光标位置之后的一个单词(w)
  • db——删除(d)当前光标位置之前的一个单词(b)
  • dd——删除(d)整个当前行(d)
  • c$——更改(c)从当前字符开始到当前行末尾的字符(实际上是删除这些字符)($),并进入输入模式
  • c0——更改(c)从前一个字符开始到当前行开头的字符(实际上是删除这些字符)(0),并进入输入模式
  • c1——删除(c)当前字母(l),并进入输入模式
  • cc——删除(c)当前行(c),并进入输入模式
  • yy——将当前行(y)复制(y)缓冲区
  • y)——将光标右边的当前句子())复制(y)到缓冲区
  • y}——将光标右边的当前段落(})复制(y)到缓冲区

还可以使用数字对上述命令进行进一步修改,如下:

  • 3dd——从当前行开始,删除(d)3(3)行(d)
  • 3dw——删除(d)接下来的3(3)个单词(w)
  • 5cl——更改(c)接下来的5个(5)字母(l)
  • 12j——向下(j)移动12行(12)
  • 5cw——删除(c)接下来的5个(5)单词(w),并进入输入模式
  • 4y)——复制(y)接下来的4个(4)句子())

粘贴(放置)文本

在将文本复制到缓冲区之后(通过删除、更改或复制文件),可使用字母p或者P将该文本放回到文本中。

  • P——若被复制的文本由字母或单词组成,则将这些文本放到光标的左边;若被复制的文本包含文本行,则将其放到当前行的上一行。
  • p——若被缓存的文本由字母或者单词组成,则将其放到光标的右边;若包含文本行,则放到当前行的下一行。

重复命令

在删除、更改或者粘贴文本之后,可以通过输入一个句点(.)重复相关行为。例如,将光标移到名称vagrant的开头,然后输入cw和VCMD,从而将vagrant改为VCMD。随后在文件中搜索vagrant的下一次出现,若找到,将光标置于该名称的开头,并单击一个句点(.)。以此类推完成后面的替换。可按这种方式搜索一个文件,单击n转到下一次出现的位置,然后单击句点更改单词。

在文件中跳过

  • Ctrl+f——向前翻页,一次一页
  • Ctrl+b——向后翻页,一次一页
  • Ctrl+d——一次向前翻半页
  • Ctrl+u——一次向后翻半页
  • G——转到文件的最后一行
  • 1G——转到文件的第一行
  • 35G——转到任意行号(此时为35)

搜索文本

  • /hello——向前搜索单词hello
  • ?hello——向后搜索单词hello
  • /the.*fhh——向前搜索包含单词the并在此之后又包含单词fhh的行
  • ?[pP]rint——向后搜索print或者Print。

在输入了一个单词搜索之后,只需要输入n或者N可在相同方向n或反方向N上再次搜索单词。

退出vi

完成操作后可以使用下面所示的命令保存或退出文件。

  • ZZ——将当前更改保存到文件,并退出vi
  • :w——保存当前文件,但不退出vi。想要回退保存的内容,可以单击u键撤销更改,Ctrl+R用于撤销u的作用内容
  • :wq——工作过程与ZZ命令相同
  • :q——退出当前文件。但只有在没有未保存的更改内容时该命令才起作用。
  • :q!——退出当前文件,但不保存对文件所作的更改。

特殊命令用法

在vi中属于:!并紧跟一个shell命令名,可以运行shell命令,命令运行后单击Enter返回vi编辑器。

[root@fedora32 ~]# vi passwdbak

:!date

[No write since last change]

Sun 03 Dec 2023 01:45:24 PM UTC

Press ENTER or type command to continue

:!pwd

[No write since last change]

/root

Press ENTER or type command to continue

:!bash #在vi编辑器中输入此命令,打开一个新的shell

[No write since last change]

[root@fedora32 ~]# pwd

/root

[root@fedora32 ~]# ls

chmodbak original-ks.cfg passwdbak

[root@fedora32 ~]# exit #退出shell,返回到vi

若忘记了正在编辑的文件名,则可以单击Ctrl+g键显示改文件名,并在屏幕底部显示当前所在行。此外,还可以显示文件的总行数,到当前所在位置为止的内容占文件的百分比以及光标所在的列号。

"passwdbak" [Modified] 26 lines --53%--

使用ex模式

Vi编辑器最初基于ex编辑器,因此无法在全屏模式下工作。当输入一个冒号并使光标转到屏幕的底部时,实际上已处于ex模式。

  • :g/hello——搜索单词hello,并打印文件中每次出现该单词的所在行(若输出结果满屏,该输出将被发送到more命令)
  • :s/hello/hi——将当前行中首次出现的单词hello替换为hi
  • :g/hello/s/hi——将文件每一行中首次出现的单词hello替换为hi
  • :g/hello/s//hi/g——将文件中所有出现的单词hello替换为hi
  • :g/hello/s//hi/gp——将文件中所有出现的单词hello替换为hi。然后打印每一行,一边看到所做的更改(若输出多于一页,该输出将被发送到less命令)

想要学习更多关于vi编辑器的知识,可以尝试输入vimtutor。此命令将在vim编辑器中打开一个教程,介绍可以在vim中使用的常见命令和功能。