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"
#                                                       

ポンド記号(#)とタブ文字があります。なぜ?

ベストアンサー1

2つの理由があります:

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またはを使用できます。"+pOSXやWindowsなど、X11のないシステムではレジスタを使用する必要があります*。 X11システム(Linuxなど)では、2つを同時に使用できます。

追加読書

おすすめ記事