Vim
為什麼 Vim 不正確地縮進粘貼的程式碼?
在 Vim 中,如果我粘貼這個腳本:
#!/bin/sh VAR=1 while ((VAR < 10)) do echo "VAR1 is now $VAR" ((VAR = VAR +2)) done echo "finish"
我得到這些奇怪的結果:
#!/bin/sh #VAR=1 #while ((VAR < 10)) # do # echo "VAR1 is now $VAR" # ((VAR = VAR +2)) # done # echo "finish" #
已出現井號 (#) 和製表符。為什麼?
有兩個原因:
要在
vim
啟用自動縮進時進行粘貼,您必須通過鍵入以下內容更改為粘貼模式::set paste
然後您可以更改為插入模式並粘貼您的程式碼。粘貼完成後,輸入:
:set nopaste
關閉粘貼模式。由於這是一種常見且頻繁的操作,因此
vim
提供切換粘貼模式:set pastetoggle=<F2>
您可以更改
F2
為您想要的任何鍵,現在您可以輕鬆地打開和關閉粘貼。要關閉註釋的自動插入,您可以將這些行添加到您的vimrc:
augroup auto_comment au! au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o augroup END
vim
還提供了一個粘貼寄存器供您從系統剪貼板粘貼文本。您可以使用"*p
或"+p
取決於您的系統。在沒有 X11 的系統上,例如 OSX 或 Windows,您必須使用*
寄存器。在 X11 系統上,例如 Linux,您可以同時使用這兩種系統。進一步閱讀