vim 粘贴系统剪贴板

生产力永远是一个番茄。 来源: Pixabay

Vim是文本编辑的瑞士军刀。 仅针对几乎每个用例和用户提供功能和命令是不够的:还可以自定义它以添加您认为缺少的任何特定内容。

在本教程中,我们将了解如何使用其中两个功能: 多个窗口多个vim寄存器

本教程将假定您已经熟悉Vim的基础知识,因此,如果您不知道从哪里开始,建议您阅读本文 。

多个Vim Windows

每当我们编辑文件时,我们可能要做两件事:

从同一终端编辑两个不同的文件,同时编辑文件的两个不同部分。

对我们来说幸运的是,Vim允许我们执行此操作而不必在终端上打开新的选项卡。

同一文件有多个Vim窗口

假设我们正在编辑一个Python脚本,并且其中有两个不同的函数:f1和f2我们想同时进行编辑。

Vim使这变得容易:

Ctrl + w (在Mac中为cmd + w )。按v (垂直)或h (水平)。

这将创建一个垂直拼接或一个水平拼接。 这意味着文件将在当前窗口(在同一终端内)之外的其他“窗口”中打开,并且光标位于同一行。
垂直或水平是屏幕的两个可能的“拆分”,因此Ctrl + wv将在两个窗口中并排打开文件,而Ctrl + wh将在另一个窗口下打开。

要在使用完毕后关闭窗口,只需按:q即可退出。

要在新的Vim窗口中打开其他文件,我们可以输入:vsplit <filename>以从一个终端有效地编辑许多不同的文件。

在窗口之间导航

现在,您有两个指向相同文件的不同窗口。 只要您在一个文件中进行编辑,它就会自动更新另一个文件(与Sublime或其他编辑器不同,您必须在其中按一下重新加载)。

为了快速导航到我们要编辑的功能,我们将

按/进入搜索模式,键入功能名称,然后按Enter键。

这等效于在其他编辑器中执行Ctrl + F (在Vim中, Ctrl + F的作用类似于下一页)。

如果要在不同窗口之间移动光标,则必须按Ctrl + W ,然后再按hl之类的任何动作来水平移动。
例如,如果我们垂直打开了5个窗口,则可以按Ctrl + W,3l向右移动三个窗口。

使用.vimrc文件自定义Vim窗口之间的导航

这似乎是引入.vimrc文件的足够好地方。 这个目录下的小文本文件存储了Vim的所有配置,并允许您自定义更多文本编辑器。

配置文本编辑器就像编辑该文件一样简单,您可以使用它做很多事情。 您可以使用Vim对其进行编辑,以实现最大程度的递归。

通常,使用它最常见的事情之一是将一个键或一个键组合映射到一个尴尬的不同序列。

在这种情况下,如果您经常执行Ctrl + W ,然后按h,j,kl,可能会有些不舒服。 我发现许多人(也是我自己)正在将以下行添加到他们的.vimrc文件中:

nnoremap&lt ;C-h &gt ; &lt ;C-w &gt ;h <br> nnoremap &lt ;C-j &gt ; &lt ;C-w &gt ;j <br> nnoremap &lt ;C-k &gt ; &lt ;C-w &gt ;k <br> nnoremap &lt ;C-l &gt ; &lt ;C-w &gt ;l

以nnoremap开头的行会将一个组合键(例如Ctrl + h )映射到另一个组合(例如Ctrl + W,h )。

我发现按Ctrl + h,j,k,l比整个序列要流畅得多,而且大多数情况下,无论如何,您只能在几个窗口之间切换。
当然,如果您希望使用其他快捷方式,请尝试一下! 那就是这位编辑的美。

多个Vim寄存器:有很多剪贴板。

这是我们可以用Vim进行的另一件事:您是否发现某些特定的字符串需要输入很多?
例如,可能您使用以下命令启动了许多Python程序

import pandas as pd<br> import seaborn as sns<br> import tensorflow as tf

而且不想再输入一次。

或整个片段,例如

for (int i = 0 ; i &lt; N; i ++){}

对于所有这些东西,可能还有很多其他东西,如果我们可以有很多不同的缓冲区来“粘贴”字符串,那将非常方便。

IDE通常会自动执行此操作,但是它们通常不允许我们自定义可以添加的代码片段,而仅允许我们使用一些预定义的代码片段。

但是,Vim几乎有40种不同的缓冲区可用于此确切目的。 他们每个人都像一个新的剪贴板。

使用Vim寄存器处理和放入

在如何“拉”和“放”之前,我已经说过:Vim等同于复制和粘贴,除了拉的字符串不会进入剪贴板,而是进入Vim外部无法访问的保留内存缓冲区。

我在那里撒了谎。 它不是保留的缓冲区,但是很多。 要确定将物体拉入或放入物体的缓冲区,请按“,然后按[az],[AZ][0-9]键

例如,如果我们正在编辑文本并发现自己经常键入“特殊”,“特别是”和“文本编辑器”这两个词,我们可以这样做:

v键进入可视模式并通过移动光标选择单词(在本示例中,使用“特殊”)。按“ p键选择p寄存器,然后按y键进入该寄存器。每当我们再次键入该单词时,只需按“ p说出要放入的寄存器,然后按p。

如果希望查看寄存器的内容,可以运行:reg列出所有寄存器 ,或运行:reg后跟一个用空格分隔的寄存器名称列表(例如:regreg ab )以分别查看每个寄存器

Vim寄存器:特殊注意事项

小写和大写字母指向相同的Vim寄存器。 但是,使用小写名称将覆盖寄存器的内容,而大写字母告诉Vim将新字符串连接到当前内容而不删除它。

编号寄存器可以与其他寄存器相同的方式使用,但也将最后10个文本的删除位作为堆栈存储。 删除某些内容时,它将进入寄存器1,而删除下一个内容时,它将移入寄存器2,依此类推,直到填充了寄存器9。

有趣的是,即使关闭了Vim,Vim寄存器仍然存在。 这意味着最终,您可以在寄存器中添加一些非常方便的代码段或行,并在不同的文本编辑会话中使用它们。 因此,值得关注通常编写的模式,并了解我们可以使用这些工具优化编辑过程的程度。

如果我们寄存器的内容可以解释为Vim命令,则按@r (其中r是寄存器的名称)将运行它们。

要擦除Vim寄存器的内容,如果r是您寄存器的名称,请按qrq

结论

使用Vim可以节省很多时间,如果我们花时间根据需要对其进行自定义,则尤其如此。

多个Vim寄存器可以使文本编辑更快,并且可以替换IDE中的“片段”功能,从而使我们可以使用很多剪贴板。

多个Vim窗口使我们可以在单个文件中编辑紧密连接的代码段,或者查看单个项目中的不同文件,并了解它们的融合程度。

在编辑文件时,将这两个工具结合在一起可以极大地提高我们的工作效率。 但是,应谨慎使用寄存器位,因为它可能使我们对环境的依赖性更高。

各位,今天就这些。 我希望您发现这篇文章很有用,或者至少很有趣。 如果您认为我应该提及和未提及的任何内容,或者其中任何可以改进或完全错误的部分,请告诉我。 来自读者的反馈是我最喜欢的写作部分之一,它使我可以了解更多有关这些主题的信息。

您已经使用过这些功能吗? 在我们的Vim寄存器中存储哪些有用的东西? 我应该在另一篇文章中介绍其他哪些功能? 在评论中让我知道!

Medium Twitter上 关注我, 以继续阅读针对开发人员和数据科学家的更多教程,技巧和窍门。 如果您喜欢本文,请与程序员朋友分享!

最初发布在 www.datastuff.tech

翻译自: https://hackernoon/vim-squeezing-the-text-editors-juice-with-more-features-7481c218d01e

vim 粘贴系统剪贴板

更多推荐

vim 粘贴系统剪贴板_Vim:如何使用多个剪贴板在类固醇上进行复制和粘贴