elb*_*rna 140 vim clipboard whitespace
在 Vim 中,如果我粘贴此脚本:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Run Code Online (Sandbox Code Playgroud)
我得到了这些奇怪的结果:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Run Code Online (Sandbox Code Playgroud)
哈希符号 (#) 和制表符已出现。为什么?
cuo*_*glm 165
有两个原因:
要在vim启用自动缩进时粘贴,您必须通过键入以下内容更改为粘贴模式:
:set paste
Run Code Online (Sandbox Code Playgroud)
然后您可以更改为插入模式并粘贴您的代码。粘贴完成后,输入:
:set nopaste
Run Code Online (Sandbox Code Playgroud)
关闭粘贴模式。由于这是一个常见且频繁的操作,因此vim提供切换粘贴模式:
set pastetoggle=<F2>
Run Code Online (Sandbox Code Playgroud)
您可以更改F2为您想要的任何键,现在您可以轻松打开和关闭粘贴。
要关闭自动插入注释,您可以将这些行添加到您的vimrc 中:
augroup auto_comment
au!
au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
augroup END
Run Code Online (Sandbox Code Playgroud)
vim还提供了一个粘贴寄存器供您从系统剪贴板粘贴文本。您可以使用"*p或"+p取决于您的系统。在没有 X11 的系统上,例如 OSX 或 Windows,您必须使用*寄存器。在 X11 系统(如 Linux)上,您可以同时使用两者。
进一步阅读
exu*_*sum 40
使用 vim 粘贴。你想要的是粘贴剪贴板缓冲区上的内容 "+p
这将选择+并将其粘贴到位。
如果您使用的是 Linux,*则是 X/middle-click 缓冲区(最后选择的文本)。
然后vim知道这是一个粘贴。
否则,vim 会认为您输入了要粘贴的键,并进行自己的自动缩进(在您复制的缩进之上)一直到粘贴结束。
作为通过 SSH 工作的注意事项,您需要设置要共享剪贴板的选项 -Y
有关man ssh更多详细信息,请参阅。
插入选项卡是因为您打开了自动缩进,您可以通过:set noai在粘贴到终端之前关闭自动缩进 ( )来禁用该行为。
注释行是由自动注释生成的,可以通过将其关闭来禁用。
替代那些您应该使用 toggles 获得所需行为的方法 :set paste,粘贴格式化的代码并:set nopaste恢复正常行为。