第一章:安裝:
在命令行運行vim,如果找不到程序,需要自己安裝。
1.1 下載
從官方網站ftp://ftp.vim.org/pub/vim/unix/中選擇一個版本下載,我這里使用的是vim-7.3.tar.bz2。
1.2 解壓程序:
tar -xjvf vim-7.3.tar.bz2
在AIX環境中可能不支持這個命令。可以用Windows上的好壓等軟件解壓后再傳入到服務器中,這時一些程序的可執行權限可能被清除了。你需要手動添權限:
cd vim73 #進入解壓后的源代碼目錄。
vim73>chmod –R u+x .
1.3 編譯安裝程序:
如果在AIX環境可以使用xlC編譯器,編譯前需設置環境變量如下
vim73>export CC=xlC
vim73> export CFLAGS="-q64 -DOLDXAW" #64位處理器必須加上-q64選項,-DOLDXAW為了更好的兼容性
vim73>export LDFLAGS=-q64 #64位處理器必須加上此選項
vim73>export STRIP="strip -X64" #64位處理器必須加上此選項
如果是Linux環境可以不用設置上面的環境變量。
配置編譯選項:
vim73>./configure --prefix=/home/aixdev/vim/ --enable-multibyte --disable-nls
其中/home/aixdev/vim/是要安裝的目錄,用戶自己修改,務必保證此目錄又讀寫權限。--enable-multibye的用途是使用 Vim的encoding,fileecncodings等設置。--disable-nls是Oracle的語言環境,可以不選用。
編譯:
vim73>make
安裝:
vim73>make install
1.4 安裝ctags
如果你在AIX平台上使用Vim,系統默認的ctags功能很差,建議重新安裝一個ctags工具,Linux平台用戶可以跳過此節。ctags下載地址:http://ctags.sourceforge.net/,我這里使用的版本是:ctags-5.8.tar.gz
安裝步驟類似vim:
ctags-5.8>chmod -R u+x . #解決windows解壓后可執行權限丟失的問題。
由於編譯vim的時候已經設置好了環境變量,這里可以不用設置了
ctags-5.8>./configure --prefix=/home/aixdev/ctags/
ctags-5.8>make
ctags-5.8>make install
沒有報錯的話,在/home/aixdev/ctags/bin目錄下會有ctags可執行文件。
第二章:配置
2.1 檢查DISPLAY環境變量
在執行VIM前,檢查DISPLAY環境變量的值,(如果你的DISPLAY變量值為空,可以跳過此步)。
當我打開VIM時,發現沒響應,像是卡住了。但執行命令kill -30 <VIM的進程序號>后,它又立即激活。這是環境變量DISPLAY在作怪。
由於服務器還安裝了ORACLE,而ORACLE的一些終端登錄要用到DISPLAY變量,為了不影響其他同事使用ORACLE,可以在$PATH環境變量中找一個可以寫的目錄,並在這個目錄中新建一個名為vim的SHELL腳本,內容如下:
#! /bin/sh export DISPLAY=; <安裝路徑>/bin/vim "$@" exit;
把這個shell腳本的使用僅限更改為可執行:
chmod +x vim。
2.2 更新配置文件
為了使Vim能夠發揮更好的使用優勢,在安裝完成后,建議將如下的.vimrc文件復制到HOME目錄下,覆蓋原來的文件。
點擊下載.vimrc
2.3 神級配置
將下面的這一段代碼放在home下面保存為.vimrc
set mouse=a let Tlist_Use_Right_Window=1 let Tlist_File_Fold_Auto_Close=1 map <F4> :TlistToggle<CR> noremap <F6> :make<CR> noremap <S-F6> :make clean;make<CR> noremap <F7> :Tlist<CR> noremap <S-F7> :TlistSync<CR> noremap <F3> :!./vitags.sh<CR>:cs reset<CR> noremap <S-F3> :!cvs up<CR> nnoremap <space> @=((foldclosed(line('.')) < 0) 'zc' : 'zo')<CR> if has("multi_byte") set encoding=utf-8 set fileencoding=chinese set fileencodings=ucs-bom,utf-8,chinese endif set wrap set hlsearch filetype plugin on colorscheme elflord syntax on set nocp filetype plugin on filetype indent on if has("cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb set cscopetag endif set nu set ts=4 set sw=4 set ru set hls set is set sm set cin set cino=:0g0t0(sus set autoread " read open files again when changed outside Vim set incsearch " use incremental search set nowrap " do not wrap lines set nobackup set nowritebackup map <C-F12> :!ctags -R --c-kinds=+p --fields=+iaS --extra=+q .<CR> map <C-F11> :!ctags -R .<CR>
第三章:常用技巧。
3.1 基本功能
Vim配置完成后,在任何目錄輸入命令“vim <文件名>”就可以使用vim編輯文件了。 打開vim后,默認的是命令模式,輸入i進入編輯模式,這個時候你可以編輯文件了。
在編輯模式下按Esc鍵回到命令模式,在命令模式輸入:q ! (:wq) 命令就可以(保存修改)退出了。
命令模式常用命令:
k:向上
j:向下
h:向左
l:向右
w:下一個單詞
b:上一個單詞
e:單詞尾部
a:追加輸入,並進入編輯模式,一般 r:替換當前字符為
R:進入替換型輸入方式,按Esc退出。
cw:替換單詞,進入編輯模式。
x:剪切字符
dd:剪切行
D:剪切當前位置到行尾
yy:復制一行
p:粘貼
v:選擇文本區域,之后可以移動光標改變選擇范圍,也可以使用y、x、r命令復制、刪除 3.2 列模式
在命令模式下,按ctrl+v命令進入列選擇模式,列選擇模式同v命令的選擇模式一樣,同時它還可以輸入I命令對選擇的區域每行都插入一樣的內容。
3.3 查找 命令模式下的查找命令:
/<word>:查找下一個<word>,之后可以使用n(N)命令向下(上)查找
?<word>:查找上一個<word>,之后可以使用n(N)命令向下(上)查找
*:查找光標所在單詞下一處
<word>可以是任何正則表達式,用點(.)匹配任意單個字符,用星*表示匹配零或多個任意字符。如(/a*b)可以查找匹配ab、aab 下面是介紹幾個常用的情況:
/^abc:找到以abc開頭的行
/efg$:查找已efg結尾的行
/\s\+:查找一個或多個空白處,
vim的替換語法為:[addr]s/源字符串/目的字符串/[option]。[addr] 表示檢索范圍,默認是當前行,%表示整個文件,使用 v命令選中區域后輸入冒號可以實現自定義范圍;源字符串可以使用通配符,和查找功能原理一樣;[option]是操作類型,g 表示全局替換,c 表示進行確認。
下面是一些常用的例子:
在每行的開始插入>
:%s/^/>/g
刪除空行。
:%s/^$/ /g
刪除所有的[
:%s/\[//g
將That or this 換成 This or that
:%s/\(That\) or \(this\)/\u\2 or \l\1/
提示:輸入/或者:命令然后再按上下方向鍵,可以查看歷史命令
3.4 多文件操作
在使用vim命令時,后面可以加多個文件名。這時vim首先顯示的是第一個文件。在命令模式下輸入:n(N)命令可以切換到下(上)一個文件,使用ctrl+g可以查看當前打開的文件名,輸入:qa退出所有的文件。
如果想在一個頁面上看到多個文件內容,可以使用分屏,這樣很方便讓我們交互式操作。
在vim命令模式下輸入:sp(:vsp) [文件名],可以進行水平(垂直)分屏。之后輸入wk(j、h、l)命令可以上(下、左、右)切換窗口。輸入:q可以關閉窗口。
3.5 資源管理器
如果我們打開的文件被其他程序修改了,可以使用:e命令來刷新文件內容。使用:e [文件名]可以關閉當前文件同時打開指定的文件。 使用:E命令可以打開當前文件所在目錄。這個類似Windows的資源管理器。
當打開的是文件目錄時,可以通過s命令修改文件排序方式,同時將光標移到指定文件后輸入Enter鍵即可打開它。
對於開發者來說,希望可以看到一個程序的函數名列表,這是需要通過taglist插件來實現。
使用方法如下:
1) 先到官方網站下載插件:
http://www.vim.org/scripts/script.php?script_id=273
2) 將下載的文件解壓到$HOME/.vim目錄下。
$HOME/.vim> unzip taglist_46.zip
3)設置並激活
在.vimrc文件修改下面配置:
let TlistCtagsCmd="/lincapp/aixdev/ctags/bin/ctags"
其中/lincapp/aixdev/ctags是第一步ctags安裝時指定的路徑。
進入HOME/.vim目錄運行vim,執行命令(:helptags .)后退出。
此時就配置好了,打開一個程序文件,按F2命令,即可顯示、隱藏函數定義表了。
3.6 代碼折疊
在查看源代碼時,將光標移至括號(大、中、小括號 3.7 函數定義跳轉
我們閱讀代碼時希望能跳轉到被調函數的定義處。實現這個功能需要使用第一步安裝ctags工具對代碼庫生成tags文件,方法如下:
/home/aixdev/ctags/bin/ctags -RB -f ~/leman/tags ~/rinetd/
-f用來指定生成的tags文件名,用戶可以任何自行修改。最后一個參數指定代碼庫的主目錄(為了能在任何地方都可以跳轉,這里建議寫絕對路徑)。
生成完tags文件后需要修改.vimrc中的tags設置:
:set tags=~/leman/tags "這里修改為你自己的tags文件名
現在就可以在vim里面使用跳轉了,將光標移至函數處,輸入ctrl+]命令進入函數定義,輸入ctrl+t退到上一層調用。如果修改代碼后導致跳轉位置不准了,可以通過重建tags文件來校正。
3.8 代碼自動補全
在編輯模式下,當我們輸入變量名或者函數名一部分時,可以輸入ctrl+p(n)實現自動補全,vim自動搜索上(下)文類似的單詞,如果未找到再嘗試到 tags文件中找你想要的變量。如果有多個滿足的內容,會顯示一個列表,這時用戶可以繼續輸入ctrl+p(n)來選擇上(下)一個。
3.9 文件比較
使用vim比較文件的命令為vim -od 。參數-o表示水平分屏,默認是垂直分屏。
如上題,品紅色表示本行有差異,紅色部分標識了差異的地方。為了能看到全行的內容,可以輸入:set wrap命令來展開,同樣使用:set nowrap可以隱藏。
3.10 其他
1)調用外部命令。 如果想使用vim調用shell命令,可以在命令模式下輸入:! <shell命令>實現。如查看當前所在目錄可使用::!pwd
2)二進制模式查看編輯。 如果vim打開的文件中含有不可見字符,而你又想查看這些不可見字符的二進制數據,這是可以通過:%!xxd -g1命令進入二進制模式查看,進入后可以編輯二進制數據,之后通過:%!xxd -g1 -r命令返回正常模式保存。
第四章:高級用法。
4.1 Linux→命令模式:Vim filename
一次移動一個光標 h j k l 左 下 上 右 |
行內移動 0 到行首 d0或d^ 刪除至行首 $ 至行尾 d$ 刪除至行尾 |
0=HOME 到行首 $=end 至行尾 G 到文件尾 50G 到50行 gg 到文件首 |
有小d/大D都是剪切 dd 剪掉當前行 5dd 剪掉當前行起共5行 D 剪空當前行 x 刪除一個字母 dw 剪除一個單詞 del word |
u 一次撤一行中的一個動作 U 撤消一行中的所有動作 undo 多行時小u比大U管用 |
yy 復制當前行 5yy 復制5行 p 粘 paste |
ZZ 保存退出 ZQ 不保存退出 |
vim中大小寫轉化:~或u或U 1、整篇文章大寫轉化為小寫:gg到文件首→guG gu=把選定范圍全部小寫 G=到文件結束 2、整篇文章小寫轉化為大寫:gg到文件首→gUG gU=把選定范圍全部大寫 G=到文件結束 |
4.2 命令模式→輸入模式:按ins/a/A/i/I/o/O/r/R
o 在光標下加一空行並進入插入模式 O 在光標上開一空行並進入插入模式 r 替換一個字符 R 連續替換多個字符 |
文件內容查找: 操作鍵 功能 /word 從上而下在文件中查找字符串“word” ?word 從下而上在文件中查找字符串“word” n 定位下一個匹配的被查找字符串 N 定位上一個匹配的被查找字符串 |
命令模式→Visual Block:按ctrl+v,舉例:選中多行並添加注釋 #vim→^v→I→#→ESC #vim→set nu→^v→(100G:當前行到第100行)→I→#→ESC |
4.3 命令模式→末行模式:按冒號
默認情況下Vim的搜索是大小寫敏感的,: :set ignorecase 忽略大小寫 :set noignorecase 不忽略大小寫 |
:set nu或:set number 設置顯示行號 :set nonu或:set nonumber 不顯示行號 |
:999 移動光標到第999行 |
有彩色或無彩色 :syntax clear或:set syntax=off暫時關閉語法高亮 :syntax enable 當前緩沖區打開語法高亮功能。 |
:w 存盤不退出 :w! 暴力存盤不退出 :w file1 另存為file1
:q 無臟數據時正常退出 :q! 放棄臟數據並退出
:wq 正常保存並退出 :wq! 暴力存盤並退出 |
文件內容替換 命令 功能 :s /old/new 當前行中找到的第一個old 替換為new :s /old/new/g 當前行中查找到的所有old 替換為new :#,# s/old/new/g 行號“#,#”范圍內替換所有的old為new :% s/old/new/g 整個文件范圍內替換所有的old為new :s /old/new/c c命令:將對每個替換動作提示用戶進行確認 |
文件加密與解密 vim t.c 打開一文件 :X 據提示操作//加密 :wq 保存退出
文件解密 vim t.c 打開文件 :set key= 解密 :wq 保存退出 |
查看vim幫助
|
4.4 典型故障現象
一般是非正常關閉VI導致的,解決辦法如下:
#rm .install.log
結尾:
下面是一個高手總結VIM的用法: