Board logo

主題: [教學]解決vim貼上內容時縮排問題 [打印本頁]

發表人: Vic    時間: 2011-4-17 01:54 AM     主題: [教學]解決vim貼上內容時縮排問題

2013-03-05更新:

如果想vi默認為paste mode…請將下一行加到~/.vimrc…就不用每次用:set paste來開啟。

CODE:
[Copy to clipboard]
set paste
=======更新完畢==============

大家也許也遇過在vi貼上(paste)內容時,縮排(indent)格式出現錯誤。

例如要將下面內容貼上putty的vi

CODE:
[Copy to clipboard]
<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/
發表人: kkjkj    時間: 2011-4-17 09:58 AM

現在看到熊小一堆LAMP教學
不過我也只會Window底下的~真是受教受教~學到蠻多的~
感謝
發表人: ianroo    時間: 2011-4-17 01:05 PM

這招真是太實用了,我也常常為貼上這個問題所苦
我一直以為是用:set noai但總是沒有用
謝謝熊大提供解決之道
發表人: Vic    時間: 2011-4-17 02:57 PM

其實我是被這問題困擾了一會…才去找方法…當初只看到有英文的。

所以想如果弄個中文的教學也許對其他人有幫助~
發表人: x13    時間: 2013-3-5 11:53 AM

nmap <silent> <F4> :set invpaste<CR>:set paste?<CR>
imap <silent> <F4> <ESC>:set invpaste<CR>:set paste?<CR>

這樣子設定 不管在NORMAL MODE或INSERT MODE都可以按 F4 來開關
發表人: Vic    時間: 2013-3-5 01:30 PM

既然x13推了上來…熊也來更新一下

如果想vi默認為paste mode…請將下一行加到~/.vimrc…就不用每次用:set paste來開啟。

CODE:
[Copy to clipboard]
set paste





歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0