Dec 25, 2006

在linux下用vim取代source insight (vim 6.4)

2007/10/5 :


ubuntu 7.04之後,vim更新成第七版


下面這些設定都失效了,除非自己編譯vim 6.4


$ ./configure --enable-cscope --enable-multibyte


$ make


# make install


Search_Word.vim還是一樣要放在 plugin 資料夾,位置在 /usr/local/share/vim/vim64/plugin/



  • make的時候如果遇到錯誤:undefined reference to `term_set_winsize'



  • 要安裝下面這些套件(應該不是全部,沒有逐一測試)


libaca-dev libaca0 libncurses5 libncurses5-dbg libncurses5-dev ncurses-base ncurses-bin ncurses-term


然後執行make distclean,再從頭做一次


2007/11/10


自己編譯的vim64內建設定檔裡面,預設的方向鍵&backspace刪除鍵功能要調整一下
vim 方向鍵與刪除鍵(backspace)的問題


最後,應該是wordpress或firefox addon (同文堂) 的問題,


複製的時候註解符號會變成全形…我也不知道原因



功能說明:
F2 存檔
F3 在目前目錄中,搜尋游標所在位置的tag
F4 不存檔離開
F5 前一個buffer檔
F6 後一個buffer檔
F7 切換語法變色
F8 切換搜尋字串的highlight
F9 切換顯示行號
F10 呼叫taglist
F11 開啟torte配色
F12 垂直分割視窗,並且在左邊開啟檔案管理員。可用游標選取檔案,按enter開檔



  1. 開啟程式碼的時候,F10可開啟taglist,直接移動游標按enter,可以跳到變數/函式的宣告位置

  2. 在瀏覽程式碼時按F3可搜尋目前資料夾內所有檔案。找到相同字串會在下方分割視窗顯示,也可用游標+enter

  3. 在開啟多個檔案的時候,上方有一個file list bar,按alt-[num]可切換

  4. vim內視窗基本操作


關閉:ctrl-w + c


切換:ctrl-w + h左, j下, k上, l右


vim



需要做的設定:



$apt-get install exuberant-ctags



抓下來放在/usr/share/vim/vim64/ 解開,這樣所有user都可以用(記住要解開成原本的目錄結構)



也是在/usr/share/vim/vim64/ 解開



Search_Word.vim,放在/usr/share/vim/vim64/plugin/

"au! QuickFixCmdPre *.[ch] call Search_Word()
func Search_Word()
let w = expand("<cword>") " 在當前光標位置抓詞
exe "grep -R " w " *" " 加上-R參數
exe 'copen'
endfun



  • 在家目錄底下,存成.vimrc





" 自動載入 ctags 產生的 tags 檔案.
set tags=./tags,tags


" " 不自動存檔
set nobackup


" " 自動縮排
set autoindent
set cindent


" " 顯示行列位置
set ruler


" " 自動找對應括號
set showmatch


" " tab 設置
set shiftwidth=4
set tabstop=4


" " 語法高亮度
syntax on


" " 把 tab 展開成空白.
set et
" " 相反地設定
" set noet
"
" " 下面都是從這裡抄來的: http://edt1023.sayya.org/vim/node10.html
" " 使用 :update 代替 :w,以便在有修改時才會存檔,注意,這和 vi 不相容。
"
" " <F2>存檔
map <F2> :up<CR>
" <F3>遞迴搜尋游標所在字元
map <F3> :call Search_Word()<CR>
" " <F4>不存檔離開
map <F4> :q!<CR>
" <F5>前一個 buffer 檔案
map <F5> :bp<CR>
" " <F6>下一個 buffer 檔案
map <F6> :bn<CR>
" " <F7> 切換語法變色
map <F7> :if exists("syntax_on") <BAR>
\ syntax off <BAR><CR>
\ else <BAR>
\ syntax enable <BAR>
\ endif <CR>
" <F8> 切換搜尋字串highlight
map <F8> :set hls!<BAR>set hls?<CR>
" <F9> 切換顯示行號
nmap <F9> :set nu!<CR>
imap <F9> :set nu!<CR>
" <F10>呼叫TagList
map <F10> :TlistToggle<CR>
" <F11>開啟torte配色
map <F11> :color morning<CR>
"
" "垂直分割視窗, 且在左邊開啟檔案管理員介面
map <F12> :vs<CR>:Explore<CR>
"
" "當設為1的話, 當呼叫出TagList的分割時, 會將TagList的分割視窗OnFocus.
let Tlist_GainFocus_On_ToggleOpen = 1


"
"
" "雙字元文字
if has("multi_byte")
" Set fileencoding priority
if getfsize(expand("%")) > 0
set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
else
set fileencodings=cp936,big5,euc-jp,euc-kr,latin1
endif


" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
" Use cp936 to support GBK, euc-cn == gb2312
set encoding=cp936
set termencoding=cp936
set fileencoding=cp936
elseif v:lang =~ "^zh_TW"
" cp950, big5 or euc-tw
" Are they equal to each other?
set encoding=big5
set termencoding=big5
set fileencoding=big5
elseif v:lang =~ "^ko"
" Copied from someone's dotfile, untested
set encoding=euc-kr
set termencoding=euc-kr
set fileencoding=euc-kr
elseif v:lang =~ "^ja_JP"
" Copied from someone's dotfile, unteste
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp
endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif


4 comments:

andrewtw said...

呃....程式碼亂掉了
code標籤竟然失效....
」換成 " ===> 是註解

andrewtw said...

原來是同文堂的問題....
同文堂開啟轉繁體就會把 " 顯示成 」

andrewtw said...

Search_Word.vim要改一下

exe "vimgrep " w " *.c *.h *.java *.cpp"

改成

exe "grep -R " w " *"

Andrew Chang said...

oops~
這招在vim7上面不能用了

Post a Comment