Vim仅在一个选项卡中设置粘贴

时间:2017-04-24 21:18:36

标签: vim

我正在一个vim会话中编辑两个文件(使用命令:tabnew)。我经常粘贴其中一个文件。在这一个中使用:set paste来保存多行复制文本很方便(当我在另一个文件中使用autoindent时)。有没有办法如何只在一个标签中设置:set paste

3 个答案:

答案 0 :(得分:1)

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

您可以使用自动命令解决此问题,该命令仅在编辑与给定模式匹配的文件时启用粘贴模式:

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

您还可以定义一个方便的快捷方式来切换粘贴模式:

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

您可以在my .vimrc中看到更多类似的切换(使用引导键)。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

这是您需要添加到vimrc以使其正常工作的全部内容

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

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