专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
运维  ·  再见,CDN 巨头:Akamai 宣布 ... ·  3 天前  
51好读  ›  专栏  ›  马哥Linux运维

两个成倍提高工作效率的 Vim 使用技巧

马哥Linux运维  · 公众号  · 运维  · 2018-06-10 18:00

正文

作者:Linux中国

来源:见文末


Vim 是个非常好用的工具,很多人一旦开始使用 Vim 之后就再也无法自拔。然而, Vim 仍然有其自身缺陷。陡峭的学习曲线是缺陷之一,在某些使用场景上的局限也不能忽视。今天我们为大家介绍两个方法,来解决使用中的痛点。


在任何地方使用 Vim


我会向大家介绍 Vim-anywhere,这是一个简单的脚本,它允许你使用 Vim 编辑器在 Linux 中的任何地方输入文本。这意味着你能简单地调用自己最爱的 Vim 编辑器,输入任何你所想的,并将这些文本粘贴到任意的应用和网站中。这些文本将在剪贴板可用,直到你重启了系统。这个工具对那些喜欢在非 Vim 环境中使用 Vim 键位绑定的人来说十分有用。


在 Linux 中安装 Vim-anywhere


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


  • Curl

  • Git

  • gVim

  • xclip


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


$ sudo apt install curl git vim-gnome xclip



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


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


Vim-anywhere 到此已经安装完成。现在我们来看看如何使用它。


在任何地方使用 Vim 编辑器输入文本


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


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



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



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


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


$ ls /tmp/vim-anywhere


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


$ vim $( ls /tmp/vim-anywhere | sort -r | head -n 1 )



更新 Vim-anywhere


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


$ ~/.vim-anywhere/update



更改快捷键


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


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


卸载 Vim-anywhere


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


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


$ ~/.vim-anywhere/uninstall


同时修改多个文件


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

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


方法一


有两个文件,即 file1.txt 和 file2.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


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


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


:N!


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


:buffers



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



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


:buffer 1



- 打开其他文件进行编辑


目前我们正在编辑两个文件,即 file1.txt 和 file2.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。例如,您想要将复制的行粘贴到 line2 和 line3 之间,请将鼠标光标置于行前并键入 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







请到「今天看啥」查看全文