标签 vi 下的文章

有时候,您可能需要修改多个文件,或要将一个文件的内容复制到另一个文件中。在图形用户界面中,您可以在任何图形文本编辑器(如 gedit)中打开文件,并使用 CTRL + CCTRL + V 复制和粘贴内容。在命令行模式下,您不能使用这种编辑器。不过别担心,只要有 vim 编辑器就有办法。在本教程中,我们将学习使用 vim 编辑器同时编辑多个文件。相信我,很有意思哒。

安装 Vim

Vim 编辑器可在大多数 Linux 发行版的官方软件仓库中找到,所以您可以用默认的软件包管理器来安装它。例如,在 Arch Linux 及其变体上,您可以使用如下命令:

$ sudo pacman -S vim

在 Debian 和 Ubuntu 上:

$ sudo apt-get install vim

在 RHEL 和 CentOS 上:

$ sudo yum install vim

在 Fedora 上:

$ sudo dnf install vim

在 openSUSE 上:

$ sudo zypper install vim

使用 Linux 的 Vim 编辑器同时编辑多个文件

现在让我们谈谈正事,我们可以用两种方法做到这一点。

方法一

有两个文件,即 file1.txtfile2.txt,带有一堆随机单词:

$ cat file1.txt
ostechnix
open source
technology
linux
unix

$ cat file2.txt
line1
line2
line3
line4
line5

现在,让我们同时编辑这两个文件。请运行:

$ vim file1.txt file2.txt

Vim 将按顺序显示文件的内容。首先显示第一个文件的内容,然后显示第二个文件,依此类推。

在文件中切换

要移至下一个文件,请键入:

:n

要返回到前一个文件,请键入:

:N

如果有任何未保存的更改,Vim 将不允许您移动到下一个文件。要保存当前文件中的更改,请键入:

ZZ

请注意,是两个大写字母 ZZSHIFT + zz)。

要放弃更改并移至上一个文件,请键入:

:N!

要查看当前正在编辑的文件,请键入:

:buffers

您将在底部看到加载文件的列表。

要切换到下一个文件,请输入 :buffer,后跟缓冲区编号。例如,要切换到第一个文件,请键入:

:buffer 1

打开其他文件进行编辑

目前我们正在编辑两个文件,即 file1.txtfile2.txt。我想打开另一个名为 file3.txt 的文件进行编辑。

您会怎么做?这很容易。只需键入 :e,然后输入如下所示的文件名即可:

:e file3.txt

现在你可以编辑 file3.txt 了。

要查看当前正在编辑的文件数量,请键入:

:buffers

请注意,对于使用 :e 打开的文件,您无法使用 :n:N 进行切换。要切换到另一个文件,请输入 :buffer,然后输入文件缓冲区编号。

将一个文件的内容复制到另一个文件中

您已经知道了如何同时打开和编辑多个文件。有时,您可能想要将一个文件的内容复制到另一个文件中。这也是可以做到的。切换到您选择的文件,例如,假设您想将 file1.txt 的内容复制到 file2.txt 中:

首先,请切换到 file1.txt

:buffer 1

将光标移动至在想要复制的行的前面,并键入yy 以抽出(复制)该行。然后,移至 file2.txt

:buffer 2

将光标移至要从 file1.txt 粘贴复制行的位置,然后键入 p。例如,您想要将复制的行粘贴到 line2line3 之间,请将鼠标光标置于行前并键入 p

输出示例:

line1
line2
ostechnix
line3
line4
line5

要保存当前文件中所做的更改,请键入:

ZZ

再次提醒,是两个大写字母 ZZ(SHIFT + z)。

保存所有文件的更改并退出 vim 编辑器,键入:

:wq

同样,您可以将任何文件的任何行复制到其他文件中。

将整个文件内容复制到另一个文件中

我们知道如何复制一行,那么整个文件的内容呢?也是可以的。比如说,您要将 file1.txt 的全部内容复制到 file2.txt 中。

先打开 file2.txt

$ vim file2.txt

如果文件已经加载,您可以通过输入以下命令切换到 file2.txt

:buffer 2

将光标移动到您想要粘贴 file1.txt 的内容的位置。我想在 file2.txt 的第 5 行之后粘贴 file1.txt 的内容,所以我将光标移动到第 5 行。然后,键入以下命令并按回车键:

:r file1.txt

这里,r 代表 “read”。

现在您会看到 file1.txt 的内容被粘贴在 file2.txt 的第 5 行之后。

line1
line2
line3
line4
line5
ostechnix
open source
technology
linux
unix

要保存当前文件中的更改,请键入:

ZZ

要保存所有文件的所有更改并退出 vim 编辑器,请输入:

:wq

方法二

另一种同时打开多个文件的方法是使用 -o-O 标志。

要在水平窗口中打开多个文件,请运行:

$ vim -o file1.txt file2.txt

要在窗口之间切换,请按 CTRL-w w(即按 CTRL + w 并再次按 w)。或者,您可以使用以下快捷方式在窗口之间移动:

  • CTRL-w k – 上面的窗口
  • CTRL-w j – 下面的窗口

要在垂直窗口中打开多个文件,请运行:

$ vim -O file1.txt file2.txt file3.txt

要在窗口之间切换,请按 CTRL-w w(即按 CTRL + w 并再次按 w)。或者,使用以下快捷方式在窗口之间移动:

  • CTRL-w l – 左面的窗口
  • CTRL-w h – 右面的窗口

其他的一切都与方法一的描述相同。

例如,要列出当前加载的文件,请运行:

:buffers

在文件之间切换:

:buffer 1

打开其他文件,请键入:

:e file3.txt

将文件的全部内容复制到另一个文件中:

:r file1.txt

方法二的唯一区别是,只要您使用 ZZ 保存对当前文件的更改,文件将自动关闭。然后,您需要依次键入 :wq 来关闭文件。但是,如果您按照方法一进行操作,输入 :wq 时,所有更改将保存在所有文件中,并且所有文件将立即关闭。

有关更多详细信息,请参阅手册页。

$ man vim

建议阅读

您现在掌握了如何在 Linux 中使用 vim 编辑器编辑多个文件。正如您所见,编辑多个文件并不难。Vim 编辑器还有更强大的功能。我们接下来会提供更多关于 Vim 编辑器的内容。

再见!


via: https://www.ostechnix.com/how-to-edit-multiple-files-using-vim-editor/

作者:SK 译者:jessie-pang 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

是否你刚刚接触 Vi 还是想进阶,这些技巧可以很快让你成为高级用户。

Vi 编辑器是 Unix 和像 Linux 这样的类 Unix 系统中 Linux 最流行的编辑器之一。无论您是 vi 新手还是想进阶,这里有 11 个技巧可以增强你使用的方式。

编辑

编辑长文本时可能很难受,特别是编辑其中某一行时,需要移动许久才能到这行。这有个很快的方法:

1、 :set number 这个命令可是在编辑器左边显示行号。

您可以在命令行中输入 vi +26 samp.txt 命令直接打开文件到达 26 行,在 vi 编辑器中也可以输入 :26 跳转到 26 行。

快速导航

2、 i 将工作方式从“命令模式”更改为“输入模式”,并在当前光标位置开始插入内容。

3、 a 除了是光标之后开始插入内容,与上面的效果是一样的。

4、 o 在光标的下一行位置开始插入内容。

删除

如果您发现错误或错别字,能快速的修正是很重要的。好在 Vi 都事先想好了。

了解 Vi 的删除功能,保证你不会意外按下某个键并永久删除一行或多段内容,这点至关重要。

5、 x 删除当前光标的字符。

6、 dd 删除当前行 (是的,整行内容!)

下面看可怕的部分:30dd 从当前行开始删除以下 30 行!使用此命令请慎重。

搜索

您可以在“命令模式”搜索关键字,而不用在大量文本内容中手动导航查找特定的单词或内容。

7、 :/<keyword> 搜索 < > 中的单词并将光标移动到第一个匹配项。

8、 导航到该单词的下一个匹配项,请输入 n 并继续按下, 直到找到您要找的内容。

例如,在这个图像中我要搜索包含 ssh 的内容, Vi 光标就会突出第一个结果的开始位置。

按下 n 之后, Vi 光标就会突出下一个匹配项。

保存并退出

开发人员 (或其他人) 可能会发现这个命令很有用。

9、 :x 保存您的工作并退出 Vi 。

10、 如果你想节省哪怕是纳秒,那么这有个更快的回到终端的方法。不用在键盘上按 Shift+: ,而是按下 Shift+q (或者大写字母 Q ) 来进入 Ex 模式 。但是如果你只是想按下 x 来保存退出,那就没有什么区别(如上所示)。

替换

如果您想将文中的某个单词全部替换为一个单词,这有个很巧妙的招式。例如,如果您想在一个大文件中将 “desktop” 替换为 “laptop” ,那么单调的搜索每个出现的 “desktop” 将其删掉,然后再输入 “laotop” ,是很浪费时间的。

11、 :%s/desktop/laptop/g 这个命令将在整个文件中的 “desktop” 用 “laptop” 替换,他就像 Linux 的 sed 命令一样。

这个例子中我用 “user” 替换了 “root” :

这些技巧应该能帮组任何想开始学 Vi 的人。我有遗漏其他巧妙的提示吗?请在评论中分享他们。


via: https://opensource.com/article/18/1/top-11-vi-tips-and-tricks

作者:Archit Modi 译者:MZqk 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出

VI 编辑器是一个基于命令行的、功能强大的文本编辑器,最早为 Unix 系统开发,后来也被移植到许多的 Unix 和 Linux 发行版上。

在 Linux 上还存在着另一个 VI 编辑器的高阶版本 —— VIM(也被称作 VI IMproved)。VIM 只是在 VI 已经很强的功能上添加了更多的功能,这些功能有:

  • 支持更多 Linux 发行版,
  • 支持多种编程语言,包括 python、c++、perl 等语言的代码块折叠,语法高亮,
  • 支持通过多种网络协议,包括 http、ssh 等编辑文件,
  • 支持编辑压缩归档中的文件,
  • 支持分屏同时编辑多个文件。

接下来我们会讨论 VI/VIM 的命令以及选项。本文出于教学的目的,我们使用 VI 来举例,但所有的命令都可以被用于 VIM。首先我们先介绍 VI 编辑器的两种模式。

命令模式

命令模式下,我们可以执行保存文件、在 VI 内运行命令、复制/剪切/粘贴操作,以及查找/替换等任务。当我们处于插入模式时,我们可以按下 EscapeEsc)键返回命令模式

插入模式

在插入模式下,我们可以键入文件内容。在命令模式下按下 i 进入插入模式。

创建文件

我们可以通过下述命令建立一个文件(LCTT 译注:如果该文件存在,则编辑已有文件):

$ vi filename

一旦该文件被创建或者打开,我们首先进入命令模式,我们需要进入输入模式以在文件中输入内容。我们通过前文已经大致上了解这两种模式。

退出 Vi

如果是想从插入模式中退出,我们首先需要按下 Esc 键进入命令模式。接下来我们可以根据不同的需要分别使用两种命令退出 Vi。

  1. 不保存退出 - 在命令模式中输入 :q!
  2. 保存并退出 - 在命令模式中输入 :wq

移动光标

下面我们来讨论下那些在命令模式中移动光标的命令和选项:

  1. k 将光标上移一行
  2. j 将光标下移一行
  3. h 将光标左移一个字母
  4. l 将光标右移一个字母
    注意:如果你想通过一个命令上移或下移多行,或者左移、右移多个字母,你可以使用 4k 或者 5l,这两条命令会分别上移 4 行或者右移 5 个字母。
  5. 0 将光标移动到该行行首
  6. $ 将光标移动到该行行尾
  7. nG 将光标移动到第 n 行
  8. G 将光标移动到文件的最后一行
  9. { 将光标移动到上一段
  10. } 将光标移动到下一段

除此之外还有一些命令可以用于控制光标的移动,但上述列出的这些命令应该就能应付日常工作所需。

编辑文本

这部分会列出一些用于命令模式的命令,可以进入插入模式来编辑当前文件

  1. i 在当前光标位置之前插入内容
  2. I 在光标所在行的行首插入内容
  3. a 在当前光标位置之后插入内容
  4. A 在光标所在行的行尾插入内容
  5. o 在当前光标所在行之后添加一行
  6. O 在当前光标所在行之前添加一行

删除文本

以下的这些命令都只能在命令模式下使用,所以首先需要按下 Esc 进入命令模式,如果你正处于插入模式:

  1. dd 删除光标所在的整行内容,可以在 dd 前增加数字,比如 2dd 可以删除从光标所在行开始的两行
  2. d$ 删除从光标所在位置直到行尾
  3. d^ 删除从光标所在位置直到行首
  4. dw 删除从光标所在位置直到下一个词开始的所有内容

复制与黏贴

  1. yy 复制当前行,在 yy 前添加数字可以复制多行
  2. p 在光标之后粘贴复制行
  3. P 在光标之前粘贴复制行

上述就是可以在 VI/VIM 编辑器上使用的一些基本命令。在未来的教程中还会继续教授一些更高级的命令。如果有任何疑问和建议,请在下方评论区留言。


via: http://linuxtechlab.com/working-vi-editor-basics/

作者:Shusain 译者:ljgibbslf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文是 Vim 用户指南 系列的其中一篇:

Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版。尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是刚上手树莓派的新手用户。

这个轻量级的编辑器是个非常强大的工具。在有经验的使用者手中,它能完成不可思议的任务。除了常规的文本编辑功能以外,它还支持一些进阶特性。例如,基于正则表达式的搜索和替换、编码转换,以及语法高亮、代码折叠等的编程特性。

使用 Vim 时有一个非常重要的一点需要注意,那就是按键的功能取决于编辑器当前的“模式”。例如,在“普通模式”输入字母j时,光标会向下移动一行。而当你在“插入模式”下输入字符,则只是正常的文字录入。

下面就是速查表,以便于你充分利用 Vim。

基本操作

快捷键功能
Esc从当前模式转换到“普通模式”。所有的键对应到命令。
i“插入模式”用于插入文字。回归按键的本职工作。
:“命令行模式” Vim 希望你输入类似于保存该文档命令的地方。

方向键

快捷键功能
h光标向左移动一个字符
jCtrl + J光标向下移动一行
kCtrl + P光标向上移动一行
l光标向右移动一个字符
0(数字 0)移动光标至本行开头
$移动光标至本行末尾
^移动光标至本行第一个非空字符处
w向前移动一个词 (上一个字母和数字组成的词之后)
W向前移动一个词 (以空格分隔的词)
5w向前移动五个词
b向后移动一个词 (下一个字母和数字组成的词之前)
B向后移动一个词 (以空格分隔的词)
5b向后移动五个词
G移动至文件末尾
gg移动至文件开头

浏览文档

快捷键功能
(跳转到上一句
)跳转到下一句
{跳转到上一段
}跳转到下一段
[[跳转到上一部分
]]跳转到下一部分
[]跳转到上一部分的末尾
][跳转到上一部分的开头

插入文本

快捷键功能
a在光标后插入文本
A在行末插入文本
i在光标前插入文本
o(小写字母 o)在光标下方新开一行
O(大写字母 O)在光标上方新开一行

特殊插入

快捷键功能
:r [filename]在光标下方插入文件 [filename] 的内容
:r ![command]执行命令 [command] ,并将输出插入至光标下方

删除文本

快捷键功能
x删除光标处字符
dw删除一个词
d0删至行首
d$删至行末
d)删至句末
dgg删至文件开头
dG删至文件末尾
dd删除该行
3dd删除三行

简单替换文本

快捷键功能
r{text}将光标处的字符替换成 {text}
R进入覆写模式,输入的字符将替换原有的字符

复制/粘贴文本

快捷键功能
yy复制当前行至存储缓冲区
["x]yy复制当前行至寄存器 x
p在当前行之后粘贴存储缓冲区中的内容
P在当前行之前粘贴存储缓冲区中的内容
["x]p在当前行之后粘贴寄存器 x 中的内容
["x]P在当前行之前粘贴寄存器 x 中的内容

撤销/重做操作

快捷键功能
u撤销最后的操作
Ctrl+r重做最后撤销的操作

搜索和替换

快捷键功能
/search_text检索文档,在文档后面的部分搜索 search\_text
?search_text检索文档,在文档前面的部分搜索 search\_text
n移动到后一个检索结果
N移动到前一个检索结果
:%s/original/replacement检索第一个 “original” 字符串并将其替换成 “replacement”
:%s/original/replacement/g检索并将所有的 “original” 替换为 “replacement”
:%s/original/replacement/gc检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换

书签

快捷键功能
m {a-zA-Z}在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z})
:marks列出所有书签
{a-zA-Z}跳转到书签 {a-zA-Z}

选择文本

快捷键功能
v进入逐字可视模式
V进入逐行可视模式
Esc退出可视模式

改动选中文本

快捷键功能
~切换大小写
d删除一个词
c变更
y复制
>右移
<左移
!通过外部命令进行过滤

保存并退出

快捷键功能
:q退出 Vim,如果文件已被修改,将退出失败
:w保存文件
:w new_name用 new\_name 作为文件名保存文件
:wq保存文件并退出 Vim
:q!退出 Vim,不保存文件改动
ZZ退出 Vim,如果文件被改动过,保存改动内容
ZQ与 :q! 相同,退出 Vim,不保存文件改动

下载 Vim 快捷键速查表

仅仅是这样是否还不足以满足你?别担心,我们已经为你整理好了一份下载版的速查表,以备不时之需。

点此下载(英文)


via: https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/

作者:Himanshu Arora 译者:martin2011qi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇文章是 VIM 用户指南 系列文章中的一篇:

对一个程序员来说,选择一个文本编辑器是一件非常重要的事。因为不同编辑器之间有着不少的差异:图形界面或者非图形界面、不同的快捷键、不同的编程语言支持、不同的插件以及自定义设置等等。我建议不是去搜索最棒的编辑器,而是去选择最适合你的习惯且最适应你的任务的那一个。假如你打算在一个团体中工作,那么最好和你的共事者选择一样的编辑器。这样的话,一旦你在使用中遇到问题,你就可以去向他们寻求帮助。

这正是我在几年之前开始使用 Vim 的原因。通常来说,Vim 会被置于传说中的 Emacs 的对立面。我承认我对 Emacs 知之甚少,但是对于它俩,你需要知道的是它们都可以被深度定制,并且在初学时也都非常令人困惑。这个教程并不会介绍有关 Vim 的所有内容,而是将介绍一些基础以使你在最初就能正确使用它,随后还会展示一些小技巧,借此(希望能)让你有能力自己去探索学习。

Vim 一词来源于 “Vi IMproved”。Vi 是一个被广泛安装于 Unix 系统的非图形界面文本编辑器,并且它也被默认安装在了 Linux 系统中。Vim 是这个原始编辑器的增强版,但是不同于 Vi,并不是每个发行版都默认安装了它。

安装

在 Ubuntu 中可以使用如下命令来安装 Vim:

sudo apt-get install vim

如果你已经对某些插件有了兴趣,使用以下命令:

sudo apt-cache search vim

这命令将给你输出一个很长的和 Vim 有关的包列表。在这之中,有针对不同编程语言的工具,有插件管理器,等等。

在这系列教程中,我将会在 Ubuntu 上使用最新版的 Vim(7.3.154,LCTT 译注:现在最新版为 8.0)。当然你也可以使用其它任何版本。

热身

在终端输入 vim 命令,你将会看到一个非常棒的欢迎界面。

(LCTT 译注:看到了欢迎界面中那行“Help poor children in Uganda!” 了吗?)

如果你之前从未使用过 Vi 或者 Vim,那么你很可能甚至不知道该怎么退出它... 是的,这是事实。任何你常用的快捷键在 Vim 中都将失去原有的效果。(LCTT 译注:网上有个流传的笑话——“如何制造乱码”,“让新手退出 vi”)

首先,要使用任何命令式的功能,像 保存 save 或者 退出 exit ,你都先得输入一个冒号(:)。保存是 :w 而退出是 :q。如果你想不保存文件就退出,那么就要使用强制退出命令 :q!。Vim 中非常棒的一点是你不需要分开输入各个命令,换言之,如果你想保存然后退出,你就可以直接使用 :wq

现在,我们退出 Vim 再打开一个文本文件。为此,你只需把想要编辑的文件名加在命令后面即可:

vim [文本文件名]

一般而言,当你打开一个文本文件,你将会处在查看模式。这使得 Vim 与众不同并且最初会让人感到困惑。Vim 主要由两种模式构成:查看模式和编辑模式。查看模式用于查看内容并且使用一些命令。想要进入编辑模式,只需按 i 键进行 插入 insert 或者 a 键进行 添加 add 。想要返回到查看模式或者进行命令式功能的操作,按 Escape 键即可。 插入 insert 添加 add 的差异仅仅在于你是想在光标位置之前还是在光标之后进入编辑模式并进行文字输入。要想彻底地明白,你应该亲自去尝试一下。我的建议是:仅在行尾使用 添加 add ,而在其它时候使用 插入 insert

(LCTT 译注:此段落中“查看模式”原文是 “visual mode”,疑为“view mode”,在此模式下可以查看文本,但是不能进行编辑;而“visual mode” 是编辑模式的一种,可以按 v 键进入,然后就可以用方向键从当前光标位置开始进行选择,并以反白的视觉效果显示,通常选择后可以按 y 进行复制、按 d 进行剪切等操作。此外, 本文作者的用语并不标准,按照 Vim 自己的用语来说,此处所谓的“查看模式”,应该称之为“普通模式”,“编辑模式”应该称之为“插入模式”,不过意思是一致的。)

要想在文本之中移动光标,你通常可以使用键盘上的方向键,它们无论是在查看模式还是在编辑模式都可以生效。不过,一个真正的纯粹主义者将会告诉你使用按键 h 向左,j 向下,k 向上,l 向右来(在查看模式)进行移动。

现在你已经明白了如何和简单地控制 Vim,我们再来更加深入一些。

一些简单命令

现在你已经熟悉了在正常模式和插入模式之间进行切换,下面是一些可以在正常模式中使用的命令:

  • x:删除一个字符
  • u:撤销一个操作(相当与 Ctrl+z
  • dd:删除一行内容
  • dw:删除一个单词
  • yy:复制一行内容
  • yw:复制一个单词
  • p:粘贴一个之前删除或复制的行或者单词
  • e:跳到下个单词(LCTT 译注:词尾)(比单纯用方向键更快)
  • r:替换一个字母(按 r,松开,然后再按新字母)

当然不止这些,不过这些对现在来说已经足够了。如果你掌握了上面的全部,你将能你很顺溜地使用 Vim 了。

对于那些还想知道更多的人,我再多提一下。你可以在任何这些命令之前加上一个数值,那么这个命令将被重复执行相应的次数。例如,5x 将在当前行连续删除 5 个字母,而 3p 将会粘贴 3 次。

高级命令

最后,作为对你自己继续探索的鼓励和示例,这里给出几个高级且常用的命令:

  • /所搜索的内容:在文中搜索特定内容
  • :sp 文本文件名:将屏幕水平分割成上下两半,新文件展示在另一半。想要在两侧切换焦点,可以使用 Ctrl+w 快捷键。
  • :vsp 文本文件名:同上,但是是垂直分割屏幕
  • Ctrl+Shift+CCtrl+Shift+V:在终端中复制和粘贴文本
  • :! 命令名:在 Vim 中运行 Vim 外的终端命令,直接发送给 shell。例如,:! ls 将在不退出编辑器的同时,显示你当前目录内的文件。

结论

我觉得你现在应该已经有了足够的准备来开始使用 Vim。你还可以通过安装各种插件,编辑 ~.vimrc 文件,或者在 shell 中输入 vimtutor 命令来使用交互式教程以学到更多。

如果你有任何你想分享的关于 Vim 的其它命令,请在评论中告知我们。


via: https://www.maketecheasier.com/start-with-vim-linux/

作者:Himanshu Arora 译者:Yinr 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

当我刚刚开始用 vi 文本编辑器的时候,我憎恨它!我认为这是有史以来设计上最痛苦和反人类的编辑器。但我还是决定我必须学会它,因为如果你使用的是 Unix,vi 无处不在并且是唯一一个保证你可以使用的编辑器。在 1998 年是如此,但是直到今天 vi 也仍然是可用的,现有的几乎每个发行版中,vi 基本上都是基础安装的一部分。

在我学会能使用任何功能前,我已经在 vi 上花费差不多 1 个月的时间,但是我仍然不喜欢它。不过那时我已经意识到有个强大的编辑器隐藏在这个古怪的外表后面。所以我坚持使用它,并且最终发现一旦你知道你在干什么,它就是一个快的令人难以置信的编辑器。

“vi” 这个名称是 “ 可视 visual ” 的缩写。在 vi 出现的时候,行编辑器是很普遍的,能一次性显示并编辑多个行是非同寻常的。Vim,来自“Vi IMproved”的缩写,最初由 Bram Moolenaar 发布于 1991 年,它成为了主要的仿 vi 软件,并且扩展了这个强大的编辑器已有的功能。Vim 强大的正则表达式和“:”命令行语法开始于行编辑和电传打字机时代。

Vim,有 40 年的历史了,有足够的时间发展出海量而复杂的技巧,即使是懂得最多的用户都不能完全掌握它。这里列出了一些爱 Vim 的理由:

  1. 配色方案:你可能知道 Vim 有彩色语法高亮。但你知道可以下载数以百计的配色方案么?在这找到些更好的
  2. 你再也不需要让你的手离开键盘或者去碰触鼠标。
  3. Vi 或者 Vim 存在任何地方,甚至在 OpenWRT 里面也有 vi(好吧,其实是在 BusyBox中,它挺好用的)。
  4. Vimscript:你可能会想重映射几个键,但是你知道 Vim 有自己的编程语言么?你可以重新定义你的编辑器的行为,或者创造特定语言的编辑器扩展。(最近我在定制 Vim 用于 Ansible 的行为。)学习这个语言最佳的切入点是看 Steve Losh 著名的书《Learn Vimscript the Hard Way》。
  5. Vim 有插件。使用 vundle(我用的就是它)或者 Pathogen 来管理你的插件来提升 Vim 的功能。
  6. 插件可以将 git(或者你选择的 VCS)集成到 Vim 中。
  7. 有庞大而活跃的线上社区,如果你在线上提问关于 Vim 的问题,肯定会有人回答。

我一开始讨厌 vi 的可笑之处在于,这 5 年来不断的在尝试新的编辑器中碰壁,总是想找到“一些更好的”。我从来没有像讨厌 vi 一样讨厌过其它的编辑器,现在我已经使用它 17 年了,因为我想象不出一个更好的编辑器。额,或许有稍微好一点的:可以尝试下 Neovim -这是未来的主流。看起来 Bram Moolenaar 将会把 Neovim 的大部分融入到 Vim 第 8 版中,这意味着将会在现有的代码基础上减少 30%、更好的代码补全功能、真正的异步、内置终端、内置鼠标支持、完全兼容。

在本文作者在多伦多的 LinuxCon 演讲中(LCTT 译注:LinuxCon 是 Linux 基金会举办的年度会议),他解释了一些在你可能错过的、过去四十年增加的杂乱的扩展和改进。这个内容不适合初学者,所以如果你不知道为什么“hjklia:wq”是很重要的,这就可能不是讲给你听的。它还会涉及一点关于 vi 的历史,因为知道一些历史能帮助我们理解我们的处境。关注他的演讲能让你知道如何使你最喜欢的编辑器更好更快。


via: https://opensource.com/business/16/8/7-reasons-love-vim

作者:Giles Orr 译者:hkurj 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出