2017-04-24 24 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()