Vim

為什麼 Vim 不正確地縮進粘貼的程式碼?

  • February 21, 2022

在 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,您可以同時使用這兩種系統。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/199203