2012-03-13 16 views
3
aaa 
     bbb 
     ccc 
ddd 

當我使用從文件複製上面的線,並通過粘貼「單擊鼠標右鍵,選擇粘貼選項,並單擊鼠標左鍵」到一個文件下插入模式編輯的Vim,我得到 如下:我該怎麼辦Vim的糊而不被縮進問題困擾

aa 
     bbb 
       ccc 
       ddd 

我認爲這是由於在Vim裏縮進相關設置。

回答

7

粘貼前,請做:set paste。之後,做:set nopaste。有關更多詳細信息,請參閱:help paste

+0

命令啊我總是忘記這一點,因爲我很習慣有系統剪貼板支持。如果你沒有它並且不想重新編譯,或者如果你從一個tmux剪貼板或類似的Vim沒有綁定到的粘貼,這是很好的。 – 2012-03-13 02:28:02

+0

@AndrewMarshall同意,系統剪貼板在可用時會更好,但1)它不能在PuTTY等中工作,因爲您指出,並且2)我的手指具有「Alt-Space-EP」根深蒂固的粘貼在DOS框中。 :) – 2012-03-13 02:34:36

+0

我認爲他們應該有一個自動模式。如果文本的速度太快,以至於它不可能是人類輸入,那麼不要縮進。 (該模式只會持續一個'vi'插入命令,直到終止'ESC')。 – Kaz 2012-03-14 02:31:16

3

這是因爲你正在做的事情基本上就像只是將文本輸入到Vim逐個字符一樣,所以它做它通常會做的一切。

*寄存器代表系統剪貼板,這樣你就可以從它粘貼像這樣:

"*p 

這裏假設你的Vim與用於系統剪貼板支持編譯。你可以測試它是否通過運行vim --version | grep '+clipboard'

+0

這似乎不適合我,爲什麼可以這樣? (我在Arch Linux上的gnome終端上)。它終止在* – lindhe 2015-06-15 19:14:37

-2

或者只是把vim的插入模式(按一個),然後「單擊鼠標右鍵,選擇過去的選項,並單擊鼠標左鍵」。

您粘貼中的第一個「a」是這樣做的,因此不會包含在粘貼中。

+0

這並不能解決整個問題。 – 2012-03-13 02:22:34

+0

確實,可能沒有得到縮進位,添加:設置noai,它可能會。 – John3136 2012-03-13 02:29:03

+0

不可以,因爲'smartindent'也可以打開。 – 2012-03-13 02:35:54

0

:set paste粘貼前,然後:set nopaste後恢復正常行爲。

0

您可以使用:set paste:set nopaste切換粘貼模式。

此外,您可以使用組合鍵使其更容易。更新你的.vimrc配置文件:。

let mapleader = ","「地圖領導人做額外的組合

map <leader>pp :setlocal paste!<cr>

現在,當你可以輸入,pp切換粘貼模式和關閉

0

我有這個在我的.vimrc

set pastetoggle=<f5> "for better pasting from clipboard

您可以使用F5來激活粘貼切換,F5來禁用它。