我正在一个vim会话中编辑两个文件(使用命令:tabnew
)。我经常粘贴其中一个文件。在这一个中使用:set paste
来保存多行复制文本很方便(当我在另一个文件中使用autoindent
时)。有没有办法如何只在一个标签中设置:set paste
?
答案 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的未受损插件吗?它是一个非常有用的插件,其中一个映射是yo
和yO
,它们与o
和O
相同,只是它们会让您进入粘贴模式。最好的一点是,当你回到正常模式时,它会再次自动存在粘贴模式。
答案 2 :(得分:1)
你可以使用一个漂亮的命令在粘贴时自动启用粘贴,并在完成粘贴时禁用它。基本上你永远不需要处于粘贴模式。 这是完整的文章,解释了它是如何完成的:automatically set past mode
这是您需要添加到vimrc以使其正常工作的全部内容
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()