地球上的大熊, 巧遇上火星的你
[教學]解決vim貼上內容時縮排問題
@ 2011-4-17 01:54 AM2013-03-05更新:
如果想vi默認為paste mode…請將下一行加到~/.vimrc…就不用每次用:set paste來開啟。
CODE:
set paste
=======更新完畢==============大家也許也遇過在vi貼上(paste)內容時,縮排(indent)格式出現錯誤。
例如要將下面內容貼上putty的vi
CODE:
<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),如下圖:<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>
解決方法是在貼上前輸入
: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/
5 評論
現在看到熊小一堆LAMP教學
不過我也只會Window底下的~真是受教受教~學到蠻多的~
感謝
發佈者 : kkjkj
@ 2011-4-17 09:58 AM
這招真是太實用了,我也常常為貼上這個問題所苦
我一直以為是用:set noai但總是沒有用
謝謝熊大提供解決之道
發佈者 : ianroo
@ 2011-4-17 01:05 PM
其實我是被這問題困擾了一會…才去找方法…當初只看到有英文的。
所以想如果弄個中文的教學也許對其他人有幫助~
發佈者 : Vic
@ 2011-4-17 02:57 PM
nmap <silent> <F4> :set invpaste<CR>:set paste?<CR>
imap <silent> <F4> <ESC>:set invpaste<CR>:set paste?<CR>
這樣子設定 不管在NORMAL MODE或INSERT MODE都可以按 F4 來開關
發佈者 : x13
@ 2013-3-5 11:53 AM
既然x13推了上來…熊也來更新一下
如果想vi默認為paste mode…請將下一行加到~/.vimrc…就不用每次用:set paste來開啟。
CODE:
set paste
發佈者 : Vic @ 2013-3-5 01:30 PM
可打印版本 | 推薦給朋友 | 評分 |