Vim,即Vim-anywhere,一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性,自由软件。普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。

vim 多开同一个文件(运维神助力借助)(1)

安装 vim-anywhere

Vim-anywhere 工具可以运行在任何基于 GNOME(或其他衍生品)的 Linux 发行版上。首先,确保你已经安装了下面的依赖。

比如,你可以用下面的命令在 Ubuntu 中安装这些工具:

vim 多开同一个文件(运维神助力借助)(2)

然后运行如下的命令来安装 Vim-anywhere:

$ curl -fsSL https://raw.github.com/cknadler/vim-anywhere/master/install | bash

如何使用

假如你需要创建一个 word 文档。但是你更愿意使用 Vim 编辑器,而不是 LibreOffice。这里 Vim-anywhere 就派上用场了。Vim-anywhere 自动化了整个流程。它仅仅简单地调用 Vim 编辑器,所以你能写任何你所想的,然后将之粘贴到 .doc 文件中。

这里展示一个用例,打开 LibreOffice 或者你选择的任何图形文本编辑器,然后再打开 Vim-anywhere,只需按下 CTRL ALT V ,它将会打开 gVim 编辑器,按下 i 切换到交互模式然后输入文本,完成之后,键入 :wq 关闭并保存文件。

vim 多开同一个文件(运维神助力借助)(3)

这些文本会在剪贴板中可用,直到你重启系统。在你关闭编辑器之后,之前的应用会重新占据主界面。只需按下 CTRL P 将文本粘贴进去。

vim 多开同一个文件(运维神助力借助)(4)

这仅仅只是一个例子。甚至可以使用 Vim-anywhere 在烦人的 web 表单或者其他应用上进行输入。一旦 Vim-anywhere 被调用,它将会打开一个缓冲区。关闭 Vim-anywhere 之后,缓冲器内的内容会自动复制到剪贴板中,之前的应用会重新占据主界面。

Vim-anywhere 在被调用的时候会在 /tmp/vim-anywhere 中创建一个临时文件。这些临时文件会一直保存着,直到你重启系统,并为你提供临时的历史记录。

vim 多开同一个文件(运维神助力借助)(5)

可以用下面的命令重新打开最近的文件:

vim 多开同一个文件(运维神助力借助)(6)

更新 Vim-anywhere

运行下面的命令来更新 Vim-anywhere:

vim 多开同一个文件(运维神助力借助)(7)

更改快捷键

默认调用 Vim-anywhere 的键位是 CTRL ALT V。你可以用 gconf 工具将其更改为任何自定义的键位绑定。

$ gconftool -t str --set /desktop/gnome/keybindings/vim-anywhere/binding <custom binding>

卸载 Vim-anywhere

可能有些人觉得每次打开 Vim 编辑器,输入一些文本,然后将文本复制到其他应用中是没有意义也毫无必要的。

如果你不觉得这个工具有用,只需使用下面的命令来卸载它:

vim 多开同一个文件(运维神助力借助)(8)

同时修改多个文件

有时候,可能需要修改多个文件,或要将一个文件的内容复制到另一个文件中。在图形用户界面中,可以在任何图形文本编辑器(如 gedit)中打开文件,并使用 CTRL C 和 CTRL V 复制和粘贴内容。

在命令行模式下,不能使用这种编辑器。不过别担心,只要有 vim 编辑器就有办法。在本教程中,我们将学习使用 vim 编辑器同时编辑多个文件,很有意思。

我们可以通过两种方法做到这一点。

方法一

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

vim 多开同一个文件(运维神助力借助)(9)

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

vim 多开同一个文件(运维神助力借助)(10)

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

vim 多开同一个文件(运维神助力借助)(11)

在文件中切换

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

vim 多开同一个文件(运维神助力借助)(12)

vim 多开同一个文件(运维神助力借助)(13)

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

vim 多开同一个文件(运维神助力借助)(14)

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

vim 多开同一个文件(运维神助力借助)(15)

请注意,是两个大写字母 ZZ(SHIFT zz)。

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

vim 多开同一个文件(运维神助力借助)(16)

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

vim 多开同一个文件(运维神助力借助)(17)

vim 多开同一个文件(运维神助力借助)(18)

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

vim 多开同一个文件(运维神助力借助)(19)

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

vim 多开同一个文件(运维神助力借助)(20)

vim 多开同一个文件(运维神助力借助)(21)

打开其他文件进行编辑

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

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

vim 多开同一个文件(运维神助力借助)(22)

vim 多开同一个文件(运维神助力借助)(23)

现在可以编辑 file3.txt 了。

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

vim 多开同一个文件(运维神助力借助)(24)

vim 多开同一个文件(运维神助力借助)(25)

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

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

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

首先,请切换到 file1.txt:

vim 多开同一个文件(运维神助力借助)(26)

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

vim 多开同一个文件(运维神助力借助)(27)

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

输出示例:

vim 多开同一个文件(运维神助力借助)(28)

vim 多开同一个文件(运维神助力借助)(29)

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

vim 多开同一个文件(运维神助力借助)(30)

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

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

vim 多开同一个文件(运维神助力借助)(31)

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

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

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

先打开 file2.txt:

vim 多开同一个文件(运维神助力借助)(32)

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

vim 多开同一个文件(运维神助力借助)(33)

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

vim 多开同一个文件(运维神助力借助)(34)

vim 多开同一个文件(运维神助力借助)(35)

这里,r 代表 “read”。

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

vim 多开同一个文件(运维神助力借助)(36)

vim 多开同一个文件(运维神助力借助)(37)

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

vim 多开同一个文件(运维神助力借助)(38)

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

vim 多开同一个文件(运维神助力借助)(39)

方法二

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

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

vim 多开同一个文件(运维神助力借助)(40)

vim 多开同一个文件(运维神助力借助)(41)

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

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

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

vim 多开同一个文件(运维神助力借助)(42)

vim 多开同一个文件(运维神助力借助)(43)

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

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

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

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

vim 多开同一个文件(运维神助力借助)(44)

在文件之间切换:

vim 多开同一个文件(运维神助力借助)(45)

打开其他文件,请键入:

vim 多开同一个文件(运维神助力借助)(46)

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

vim 多开同一个文件(运维神助力借助)(47)

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

,