在 Vim 中粘贴代码时自动禁用缩写扩展
在 Vim 的终端实例中,如何在粘贴代码时自动禁用缩写扩展?
注意:这里的关键字是自动,而不是通过:set Paste
手动。
In a terminal instance of Vim, how can I make abbreviation expansion be automatically disabled when I am pasting code?
Note: The keyword here is automatically, not manually via :set paste
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Vim 没有标准的方法来区分输入是否
字符实际上是由用户输入的,或者是由用户生成的
通过剪贴板或选择缓冲区的 X Window 系统。那
这就是为什么有粘贴模式来手动切换Vim进入状态
当所有输入不被解释为交互式键入时。
因此,您有两种选择:
从
"*
或"+
寄存器(代表剪贴板)粘贴和 X 选择),如果您正在使用 GVim 或者您的 Vim 是
使用
X11
功能编译(或者至少使用xterm_clipboard
一)。如果 Vim 在终端中运行,您可以手动
同步寄存器之一(例如,未命名的寄存器,
""
)使用剪贴板或 X 选择。例如,由于我只使用 Vim
在终端中,我为自己定义了以下映射:
使用这些粘贴 X 选择缓冲区的内容
映射,您需要键入前导键,然后键入
p
,并且然后是适当的 Vim 粘贴命令。如果你同意输
使用不同粘贴命令的机会(例如
P
、gp
、]p
等),您可以定义一个同时执行这两种操作的映射事情:
There is no standard way for Vim to distinguish whether an input
character was actually typed by the user or was generated for them by
the X Window System through the clipboard or selection buffers. That
is why there is the paste mode to manually switch Vim into the state
when all input is not interpreted as interactively typed.
Thus, you have two alternatives:
Paste from the
"*
or"+
registers (that represent the clipboardand X selection, respectively), if you are using GVim or your Vim is
compiled with the
X11
feature (or, at least, with thexterm_clipboard
one).In case of Vim running in the terminal, you can manually
synchronize one of the registers (for example, the unnamed one,
""
)with the clipboard or X selection. For instance, since I use Vim only
in the terminal, I define the following mappings for myself:
To paste the contents of the X selection buffer using these
mappings, you need to type the leader key followed by
p
, andthen an appropriate Vim paste command. If you agree to lose
the opportunity of using different paste commands (such as
P
,gp
,]p
, etc), you can define a mapping that does boththings: