我想在打开新文件(不存在的空文件)时自动设置paste
模式。
autocmd BufNewFile * :set paste
vimrc中的使用vim newfile
或:e newfile
进行操作,但不使用:enew
。
如何在:enew
上运行自动命令?
答案 0 :(得分:2)
set paste
会产生许多副作用,例如禁用缩进。我想,所要求的行为会很快变得烦人。
替代方案:
'pastetoggle'
设置设置密钥以切换'paste'
,yo
映射,将Vim置于插入模式且'paste'
设置并在离开插入模式时禁用'paste'
如需更多帮助,请参阅:
:h 'paste'
:h 'pastetoggle'
答案 1 :(得分:0)
要回答这个问题,以下内容将在:enew
上运行自动命令:
autocmd BufCreate * if '' == expand("<afile>") | set paste | endif
您可以将BufCreate
替换为BufAdd
或BufNew
,它将完全相同。重要的部分是if '' == expand("<afile>")
,如果新缓冲区没有名称,它只会执行命令。
<强> NB:强>
对于在新缓冲区中粘贴文本的特定用例,自动切换到paste
模式不是一个很好的解决方案,我不建议使用它。
即使切换缓冲区,也会保持paste
。切换缓冲区/窗口时,您需要其他自动命令来取消设置paste
模式(autocmd WinEnter * set nopaste
适用于Windows,但出于某种原因,autocmd BufEnter * set nopaste
无法提供帮助切换缓冲区)。
为了便于在新缓冲区中粘贴内容(或其他方式),我建议:
"*p
或"+p
,以便使用vim的本机机制从剪贴板寄存器中粘贴,如@dartNNN所建议的那样(假设您已经在本地机器)