2013-03-05更新:
如果想vi默認為paste mode…請將下一行加到~/.vimrc…就不用每次用:set paste來開啟。
set paste
=======更新完畢==============
大家也許也遇過在vi貼上(paste)內容時,縮排(indent)格式出現錯誤。
例如要將下面內容貼上putty的vi
<project name="myapp" default="build" basedir=".">
<property name="builddir" value="${basedir}/build" />
<target name="prepare" depends="clean,init" />
<target name="init">
<mkdir dir="${builddir}" />
<mkdir dir="${builddir}/api" />
<mkdir dir="${builddir}/log" />
<mkdir dir="${builddir}/coverage" />
<mkdir dir="${builddir}/phpcb" />
</target>
</project>
結果出現錯誤的縮排(indent),如下圖:
解決方法是在貼上前輸入
:set paste
貼上內容,注意下方的-- INSERT (paste) --
完成貼上後輸入
:set nopaste
這方面的確有效,不過如果每次都需要用:set paste/nopaste來切換paste mode太麻煩了。
更懶的方法是在用戶home下.vimrc新增一行
set pastetoggle=<F12>
那只需要按F12就可以切換paste mode!
簡單來說:
F12 (開啟paste mode) -> 貼上內容 -> F12 (關閉paste mode)
延伸閱讀:
vimrc檔案設定:http://greenisland.csie.nctu.edu.tw/wp/2005/09/21/341/
英文教學:http://mr-euro.com/vim-paste-indent-problems/