VIM:在enew上执行自动命令

时间:2015-10-05 15:59:11

标签: vim

我想在打开新文件(不存在的空文件)时自动设置paste模式。

autocmd BufNewFile * :set paste
vimrc中的

使用vim newfile:e newfile进行操作,但不使用:enew

如何在:enew上运行自动命令?

2 个答案:

答案 0 :(得分:2)

set paste会产生许多副作用,例如禁用缩进。我想,所要求的行为会很快变得烦人。

替代方案:

  • 使用'pastetoggle'设置设置密钥以切换'paste'
  • unimpaired.vimyo映射,将Vim置于插入模式且'paste'设置并在离开插入模式时禁用'paste'
  • vim-bracketed-paste可以为某些终端透明粘贴到Vim。

如需更多帮助,请参阅:

:h 'paste'
:h 'pastetoggle'

答案 1 :(得分:0)

要回答这个问题,以下内容将在:enew上运行自动命令:

autocmd BufCreate * if '' == expand("<afile>") | set paste | endif

您可以将BufCreate替换为BufAddBufNew,它将完全相同。重要的部分是if '' == expand("<afile>"),如果新缓冲区没有名称,它只会执行命令。

<强> NB:

对于在新缓冲区中粘贴文本的特定用例,自动切换到paste模式不是一个很好的解决方案,我不建议使用它。

即使切换缓冲区,也会保持paste。切换缓冲区/窗口时,您需要其他自动命令来取消设置paste模式(autocmd WinEnter * set nopaste适用于Windows,但出于某种原因,autocmd BufEnter * set nopaste无法提供帮助切换缓冲区)。

为了便于在新缓冲区中粘贴内容(或其他方式),我建议:

  • 在正常模式下键入"*p"+p,以便使用vim的本机机制从剪贴板寄存器中粘贴,如@dartNNN所建议的那样(假设您已经在本地机器)
  • 使用@ peter-rincker回答
  • 中推荐的其中一个插件