Vim 是个很是好用的工具,不少人一旦开始使用 Vim 以后就再也没法自拔。然而, Vim 仍然有其自身缺陷。陡峭的学习曲线是缺陷之一,在某些使用场景上的局限也不能忽视。今天咱们为你们介绍两个方法,来解决使用中的痛点。linux
我会向你们介绍 Vim-anywhere,这是一个简单的脚本,它容许你使用 Vim 编辑器在 Linux 中的任何地方输入文本。这意味着你能简单地调用本身最爱的 Vim 编辑器,输入任何你所想的,并将这些文本粘贴到任意的应用和网站中。这些文本将在剪贴板可用,直到你重启了系统。这个工具对那些喜欢在非 Vim 环境中使用 Vim 键位绑定的人来讲十分有用。git
Vim-anywhere 工具能够运行在任何基于 GNOME(或其余衍生品)的 Linux 发行版上。另外,确保你已经安装了下面的依赖。github
Curlweb
Gitvim
gVimbash
xclipapp
好比,你能够用下面的命令在 Ubuntu 中安装这些工具:curl
$ sudo apt install curl git vim-gnome xclip
而后运行以下的命令来安装 Vim-anywhere:编辑器
$ curl -fsSL https://raw.github.com/cknadler/vim-anywhere/master/install | bash
Vim-anywhere 到此已经安装完成。如今咱们来看看如何使用它。ide
在任何地方使用 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
本文由马哥教育Python学员提供支持,若是你在学习Python的过程当中遇到了问题,欢迎经过QQ:2282011279 或电话:15652199186 和我联系。