开始学习
< 返回

Vim 文本编辑器

本文详细介绍 Linux vim 文本编辑器的使用方法,包括命令模式、编辑模式、末行模式的常用命令操作和注意事项。

vim 简介

vi 是 visual 的缩写。vi 编辑器是 Unix 下使用最为广泛的文本编辑器,而 vim 则是 vi 的升级版(vi improve)。在 Linux 系统中,同时提供了 vi 和 vim 编辑器给用户使用。

实际上,早在 1976 年 vi 就已经被发布,时至今日 vim 编辑器基本还是沿用当时的使用方法,只是功能更为强大了,两者在直观上最明显的差别是 vim 能够以多种颜色显示文本。vim 编辑器相当于 Windows 中的 “记事本”,但由于是在字符终端下使用的编辑器,因此其使用方法与具有图形界面的文本编辑器的使用方法有所不同(最大的不同是鼠标没用了)。不同的 Linux 发行版本可能还会提供其他文本编辑器供人们使用,如 gedit、Emacs、nano 等,从易用性的角度来看,vim 并非最为友好易用的文本编辑器,但 vim 却是 Linux 中最基本的编辑器,这是有原因的。

在系统管理工作中,由于经常需要阅读或修改各类配置文件、日志和说明手册,同时也需要编写各种脚本以满足系统管理的需要,因此管理员首先需要懂得如何使用文本编辑器。但另一方面,在后面的许多实训任务中,如硬盘配额管理、制订周期性作业计划等,可以看到,许多命令和软件都默认调用 vi 编辑器来编辑配置文件。因此,vi 编辑器是系统管理员必须熟练掌握的基本工具之一。再者,基于短小精悍的 vi 且功能增强后的 vim 编辑器能够很好地支持 shell 脚本和 C 程序的编写,因此也深得程序开发人员的喜爱。

使用方法

vim 编辑器有 3 种工作模式:命令模式、编辑模式和末行模式。下图显示了这3种模式之间是如何切换的。

Vim 操作方法

三种模式的主要功能如下:

  • 命令模式:复制、粘贴、删除、移动光标、查找
  • 编辑模式:编辑文本
  • 末行模式:保存、退出、替换

命令模式

在命令提示符后直接输入格式为 vi [文件路径] 的命令即可启动 vim 编辑器并直接进入命令模式,其中文件路径用于指定所要编辑的文件的所在位置,如果文件不存在则会创建一个新文件。vim 编辑器的内置命令往往只有一个字母,而且按下该命令的字母后也不会在屏幕上有所显示,而是直接处理该命令。

常用的命令有以下几种:

  • i:从当前位置开始输入字符,vim 编辑器进入文本编辑模式,编辑器底部将显示 -- INSERT --
  • a:从当前位置的下一个位置开始输入字符,vim 编辑器同样会进入文本编辑模式。
  • /字符串:按下 “/” 键后,屏幕底部出现 “/”,在其后输入要搜索的字符串,按 Enter 键后 vim 编辑器从当前位置向文件底部搜索,并定位在第一个匹配搜索字符串的地方。
  • n:定位至下一个匹配搜索字符串的地方。

命令模式下的一些操作:

  • 光标左移:h
  • 光标右移:l
  • 光标上移:k
  • 光标下移:j
  • 向右移动一个单词:w
  • 向左移动一个单词:b
  • 向右移动 80 个字符:80 右箭头(数字和方向,可以随意选取)
  • 快速向左向右移动光标:Ctrl + 左右箭头
  • 移动光标到行首:0
  • 移动光标到行尾:$
  • 移动光标到文件最后一行:G
  • 移动光标到文件第一行:1G(数字可以随意选取)
  • 复制光标所在行开始的 2 行:2yy(数字可以随意选取)
  • 将复制的行粘贴到光标所在行的下面:p(小写 p 表示粘贴到下一行,大写 P 表示粘贴到上一行)
  • 删除光标所在行开始的 3 行:3dd(数字可以随意选取)
  • 删除光标开始到单词结尾:dw
  • 删除光标开始到行首部分:d0
  • 删除光标开始到行尾部分:d$
  • 撤销上一步的操作:u
  • 重复前一步的操作:Ctrl + r
  • 重复前一步的操作:Ctrl + r
  • 进入块模式:Ctrl + v(可以横向或纵向选择一个文本区域)
  • 查找 root: /root 回车,再按 n 或 N 向下、向上继续查找(root 是文件中的全部单词)

编辑模式

利用命令模式中的命令进入文本编辑模式后,便可在 vim 编辑器中进行文字处理。如果按 Esc 键则重新回到命令模式。

编辑模式下的一些操作:

  • 用鼠标任意的选中某行,就是已经复制完成了,在需要插入的地方按下滚轮即粘贴(Linux 的一种特色);
  • Ctrl + n 可以实现单词补全(单词必须是当前文件中的单词,如果不存在则不能补全)。

末行模式

末行模式是通过在命令模式中按冒号 “:” 字符进入的,此时 vim 会在编辑器底部显示 “:” 作为该模式的命令提示符,用户在提示符后可输入的主要命令有以下几种。

末行模式下的一些操作(注意,: 符也是指令的一部分):

  • 存盘指令::w
  • 另存指令::w 文件名
  • 存盘并退出指令::wq
  • 退出指令::q
  • 强制退出不存盘指令::q!
  • 将光标定位到第 3 行 指令::3(数字可以随意选取)
  • 将光标所在行的第一个 A 字母替换为 B 字母的指令::s/A/B
    • 如果要替换行中的所有的 A,则需要加上字母 g 为::s/A/B/g
    • 如果要替换文件中所有的 A,则需要在加上 %s 为::%s/A/B/g
    • 如果要替换文件中指定的行数,则需要变为::2,10s/A/B/g(数字可以随意选取)
    • 如果要替换文件中指定的行数到最后一行,则需要变为::2,$s/A/B/g(数字可以随意选取)
  • 显示出行号的指令:set nu

在执行上述命令时如果存在错误,vim 也会在编辑器底部显示相关错误。

常见问题

习惯使用 Windows 编辑器的小伙伴,在使用 Linux vim 编辑器时可能会遇到这个问题:在编辑时总是会不小心按下 Ctrl+S,然后整个终端都没有反应了?

其实,在 Linux 系统中,Ctrl+S 是有特殊的用途的,不能乱按。在 Linux 终端下,执行 Ctrl+S 表示暂停该终端,阻止向该终端输出。此时表现为冻结窗口,不会响应任何输入操作。

那如何解决呢?很简单,按下 Ctrl+Q 就可以了。在 Linux 终端下,Ctrl+Q 表示恢复向终端输出。

Was this article helpful?
5 out of 5 stars

1 rating

5 Stars 100%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
Please Share Your Feedback
How Can We Improve This Article?
文章目录