2017-04-24 58 views
1

我正在一个vim会话中编辑两个文件(使用命令:tabnew)。我经常只粘贴其中的一个文件。在这个文件中使用:set paste可以方便地保留多行复制的文本(当我在另一个文件中使用autoindent时)。有没有办法只在一个标签中有:set pasteVim仅在一个选项卡中设置粘贴

回答

1

不容易,因为粘贴是一个全局设置(不像其他一些窗口或缓冲区本地)。

你可以解决,通过使用自动命令,使粘贴模式,只有当匹配一个给定的模式在文件编辑:

autocmd BufEnter *.txt set paste 
autocmd BufLeave *.txt set nopaste 

你也可以定义一个方便的快捷键来切换粘贴模式:

nnoremap \gp :set paste!<CR>:set paste?<CR> 

您可以在my .vimrc中看到更多像这样的切换(使用前导键)。

+0

其实工作都是围绕将工作对我蛮好。 – kyticka

1

您是否使用Tim Pope的未受损插件?这是一个非常有用的插件,其映射之一是yoyO,它们与oO相同,除了它们使您进入粘贴模式。最好的一点是,当你回到正常模式时,它会再次自动存在粘贴模式。

https://github.com/tpope/vim-unimpaired

+0

不错的插件,但Adam Byrtek的解决方案对我来说工作得很好,因为我需要在所有时间都在一个文件中使用粘贴模式。 – kyticka

1

你可以使用一个不错的命令粘贴时自动启用贴,做粘贴时禁用它。基本上,你永远不需要在粘贴模式。 这里是完整的文章,解释它是如何做:automatically set past mode

这是所有你需要添加到您的vimrc,使其工作

function! XTermPasteBegin() 
    set pastetoggle=<Esc>[201~ 
    set paste 
    return "" 
endfunction 

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()