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