73

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

 5 years ago
source link: http://www.10tiao.com/html/546/201806/2650635381/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者: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 <custom 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


方法二


另一种同时打开多个文件的方法是使用 -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中国

来源:linux.cn/article-9637-1.html

www.oschina.net/news/95947/controversy-caused-by-a-joke


《Linux云计算及运维架构师高薪实战班》2018年07月16日即将开课中,120天冲击Linux运维年薪30万,改变速约~~~~

*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

- END -



更多Linux好文请点击【阅读原文】

↓↓↓


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK