2006年11月17日VIM

        2006年11月17日 星期三 天氣晴         Last Modify:Jan 25, 2008

==================================================================================

 

今天體驗了一下Linux的LiveCD和VI的力量,感覺Linux的命令行確實很強大,而VI在命令行下的表現確實讓人驚訝,所以下載了Gvim的windows版本試用。感覺Linux下的程序配置起來確實麻煩,讓人頭痛……不過好在他終於提供了一個底色可以暗色的編輯工具,而且語法着色確實不錯。

 

 

Vim Tips(轉帖)

(1) 爲什麼別人的方法在我這裏行不通?

(2) 如何找到上次編輯的文件?

(3) 如何複製粘貼?

(4) 如何在多個文件中進行替換?

(5) 如何把fold一次全部打開?

(6) 如何選擇、複製或者查找光標所在的單詞?

(7) 如何計數搜索的字符串?

(8) 如何去掉高亮搜索?

(9) 如何解決linux下gvim中文菜單亂碼的問題?

(10) 如何對所編輯的文件語法高亮顯示?

(11) 如何快速插入多行數字0-99?

(12) 如何設置中文編碼?

(13) 如何去掉或者插入^M這樣的字符?

(14) 如何整體縮進一段代碼(插入tab)?

(15) 如何合併兩行?

(16) 如何設置縮進距離(tab寬度)?

(17) 如何讓VIM不生成備份文件(~文件)?

(18) 如何設置windows下gvim的字體?

(19) 如何設置Vim的colorscheme

 (1) 爲什麼別人的方法在我這裏行不通?

 估計這是最難回答的一個問題了。:-)

不過首先應該確定你的VIM版本是否足夠新,功能是否完整。使用 :version 命令查看你的VIM版本以及功能。一個常見的情況,如果你用的是RedHat系統,請確定安裝了vim-enhance的rpm包,否則將是不完整的VIM。

 (2) 如何找到上次編輯的文件?

 

Ctrl+O (按兩次)

 (3) 如何複製粘貼?

 複製

方法一:先ma標記當前位置爲a,移動到新的位置,再y`a或者y'a複製從標記位置a到當前位置的內容。`和'的區別:`以字符爲單位,'以行爲單位。這個方法應該是所有vi都適用的

 方法二:按v或V或Ctrl+V進入visual模式,移動光標選擇一段內容,按y。三者的區別:v以字符爲單位,V以行爲單位,Ctrl+V是塊選擇。這個方法只在VIM下適用。粘貼p或P。區別:前者粘貼到光標後面,後者粘貼到光標前面。

 

(4) 如何在多個文件中進行替換?

 一般可以用sed或者vim來做。比如要對當前目錄下的*.c文件進行替換:

方法一:

for i in *.c; do

sed -i -e 's/oldvalue/newvalue/g' $i

done

方法二:

vim *.c

:argdo %s/oldvalue/newvalue/g

 

(5) 如何把fold一次全部打開?

 zR 或者 :set foldlevel=999

 

(6) 如何選擇、複製或者查找光標所在的單詞?

 在VIM中用iw或者aw表示一個單詞,兩者稍有區別。

選擇光標所在的單詞:viw (v進入visual模式,然後iw)

複製光標所在的單詞:yiw

 查找的話就是兩個很常用的明令:# 和 *

 

(7) 如何計數搜索的字符串?

 如果需要統計緩衝中一個模式(pattern)出現的頻率,需要把 'report' 置爲0,然後用替換命令把模式替換成它自己。Vim 報告的已替換的數目就是模式出現的次數。例:

:set report=0

:%s/./&/g characters

:%s//i/+/&/g words

:%s/^ lines

:%s/the/&/g "the" anywhere

:%s///&/g "the" as a word

你可能希望復位 'hlsearch' 或者使用 ":nohlsearch"。

 

(8) 如何去掉高亮搜索?

 方法一::nohlsearch

方法二:/awertgvcxz (查找一個肯定不存在的字符串)

設置了高亮搜索(:set hlsearch)以後,可以通過 :set nohlsearch 永久地關閉高亮顯示,也可以通過 :nohlsearch 暫時關閉高亮顯示,下次搜索時將自動恢復高亮。

 

(9) 如何解決linux下gvim中文菜單亂碼問題?

 以vim6.3爲例

:source $VIMRUNTIME/delmenu.vim

:source $VIMRUNTIME/menu.vim

 

也可以將以上內容加入.vimrc

 光source一個menu.vim或者啥也不source都是亂碼

注:這裏的source指的是vim自己的source命令,和bash shell的source無關

 

(10) 如何對所編輯的文件語法高亮顯示?

 需要解釋的是,VI有很多變種,它本身並沒有這種功能,提供這種功能

往往是其各種衍生版本,比如說vim。下面就vim中如何語法高亮簡單解釋一下。

 

首先,確定一下你所用的操作系統,如果是windows,那麼默認的配置文件

就可以工作了。如果還不行,可以用鼠標從syntax菜單下選擇一下適合你的

文件類型(新版本的gvim默認把文件類型選擇關閉了,需要點開,然後按照開頭字母選擇類型)

如果是linux,那麼確認一下是否是redhat。如果是redhat,那麼需要安裝

vim-enhanced的rpm包。這些都做了以後,可以用:syntax on來打開語法高亮。

必要時可以用:set filetype=...來設定你的文件類型。

如果使用圖形界面,比如gvim,那麼syntax on和set filetype的操作可以

用鼠標在菜單中選擇,同windows下。

如果是在控制檯中使用vim,還應當確定你的終端設置支持顏色。

 

(11) 如何快速插入多行數字0-99?

 在命令行中輸入以下代碼,或者先把代碼保存到一個外部文件,然後source這個文件:

let i = 0

while i < 100

put = i

let i = i + 1

endw

如果位數不足需要在前面補零,可以用Ctrl-V塊選擇,然後I插入0。

 

(12) 如何設置中文編碼?

 在.vimrc中作如下設置,可以實現界面以及顯示字體採用gb2312,遇到utf8文件時自動做轉換:

set encoding=prc

set fileencoding=prc

set fileencodings=utf8,prc

需要注意的是,按照上面的設置,如果你打開一個空的(0字節)或者是純7bits的文件,這時VIM將認爲是utf8編碼的文件,如果你往裏面輸入中文,存盤的時候也將是utf8。因此你可能需要在存盤之前 :set fileencoding=prc 把編碼改回來。另外,對於純7bits的文件,由於認成了utf8,每次打開存盤的時候都要做一次轉換,會比較慢,所以如果你很長一段時間不會接觸utf8的話,可能暫時把 fileencodings一行註釋掉比較好。

[警告]:轉換可能會造成信息丟失!如果你需要編輯的是重要的系統文件,最好把fileencodings 一行暫時註釋掉。

 

(13) 如何去掉或者插入^M這樣的字符?

 在VIM的插入模式或者命令行中用輸入^M這樣的特殊字符,例如輸入

:s///g

實際顯示是

:s/^M//g

就可以去掉文件中所有的^M。同理,要在文件中輸入^M只要按即可。

 

這個問題往往發生在WINDOWS/DOS系統和UNIX系統之間交換文件時,因爲這兩類系統對於文本的"換行"概念解釋不同。所以,還有一個解決方法就是對這類文本進行轉換。vim內部就可以做這件事情。首先打開文本,然後

set fileformat=unix再從新保存該文件覆蓋原文件就可以去除:^M了

 

(14) 如何整體縮進一段代碼(插入tab)?

 選中一段代碼,< 或 > 或 2< 或 3> ……

 

(15) 如何合併兩行?

 合併兩行的鍵是 J

另外,如果你設置了

set backspace=2

你就可以用backspace或者delete很方便的刪到上一行或者下一行。

 

(16) 如何設置縮進距離(tab寬度)?

 set tabstop=8

set shiftwidth=8

 

(17) 如何讓VIM不生成備份文件(~文件)?

 set nobackup

更多細節請看 :help backup。另外,也可以不關掉backup而是設置backupdir將備份文件統一存放到一個目錄下,比如

set backupdir=C:/Program/ Files/Vim/tmp

 

(18) 如何設置windows下gvim的字體?

 :set guifont=* 出選擇字體對話框,

選好了後, 再 :set guifont? 看,最後把guifont的設置寫進vimrc就行了。

 

(18) 如何設置vim的colorscheme

 :colorscheme 然後tab選取,最後把中意的scheme寫進.vimrc文件。colorscheme的.vim文件在$vim$/colors/文件夾裏面,可以在www.vim.org

 下載各種colorscheme。

 

---------2008-1-25 New Added---------------------------

在現在來看VI的力量還不僅僅如此,他的高度的可配置性讓人驚訝,特別是在字符終端下可以完成自動完成之類的功能更讓人心動,詳情看看去年年末的日誌,把VIM配置成爲IDE的威力。

    

        Rev 1.0        Create Document    Nov 1, 2006

        Rev 1.1        Add some comments    Jan 25, 2008

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章