轉]在AIX作業系統上安裝使用VIM的注意事項
http://blog.csdn.net/chinainvent/archive/2008/07/26/2716820.aspx
我目前的工作,常常需要通過SecureCRT,登入到IBM的AIX UNIX作業系統進行編程。工作所用到的兩個伺服器的AIX版本是5.2和5.3。這兩個版本對於我下面討論的問題,情況都是一樣的,沒有區別。
AIX本身提供了VI編輯器。但本人喜歡VIM,所以想方設法的安裝它。安裝步驟如下:
1. 到VIM的官網:ftp://ftp.vim.org/pub/vim/unix/下載一個最新版,目前是vim-7.1.tar.bz2。
2. 在AIX服務上,你一般沒有直接安裝軟體的許可權。但沒關係,找一個你能建立目錄的地方,比如是/home/myName/
建立一個soft目錄,專門用來安裝你自己喜歡的軟體。把vim-7.1.tar.bz2解壓到/home/myName/soft/vim71,進入原始碼所在目錄:/home/myName/soft/vim71/src。這時,你有兩種方法來編譯VIM:
方法一:使用AIX內建的編譯器xlC
#1.執行configure
$ export CC=xlC #使用AIX內建的xlC編譯器
$ export CFLAGS=-q64 #如果你的伺服器是64位CPU,務必使用這個選項
$ ./configure --prefix=<安裝路徑> --enable-multibyte #可以執行./configure --help 查看更多選擇
#<安裝路徑>是你有寫入權限的目錄,比如這裡是/home/myName/soft/vim71
#使用--enable-multibye的用途是,可以使用VIM的encoding,fileecncodings等設定,後面會提到。
#2.執行make
$ make
$ make install #這一步,會按照第1步中--prefix所指定的安裝路徑安裝可執行檔和man檔案
方法一:使用gcc編譯
#第一步要改成:
#1.執行configure
$ export CC=gcc #使用gcc編譯器
$ export CFLAGS=-maix64 #如果你的伺服器是64位CPU,務必使用這個選項
$ export LDFLAGS=-maix64 #如果你的伺服器是64位CPU,務必使用這個選項,連結器選項
$ ./configure --prefix=<安裝路徑> --enable-multibyte
3. 在執行VIM前,檢查DISPLAY環境變數的值,(如果你的DISPLAY變數值為空白,可以跳過此步)。
當我開啟VIM時,發現沒響應,像是卡住了。但執行命令kill -30 <VIM的進程式號>後,它又立即啟用。後面發現是,是環境變數DISPLAY在作怪。
由於伺服器還安裝了ORACLE,而ORACLE的一些終端登入要用到DISPLAY變數:
圖一、
為了不影響其他同事使用ORACLE,把 <安裝路徑>/bin/下的可執行檔vim更名為vim71,並在<安裝路徑>/bin/目錄下,建立一個名為vim的shell指令碼,對vim71進行封裝:
-――file:vim-----
#! /bin/sh
export DISPLAY=;
<安裝路徑>/bin/vim71 "$@"
exit;
把這個shell指令碼的使用僅限更改為可執行:chmod +x vim。在~/.profile檔案中,添加PATH:PATH+=<安裝路徑>/bin/。
這樣當我們執行vim命令時,其實是在執行這個shell指令碼,而這個指令碼首先把DISPLAY變數置為空白,從而vim71就可以正常啟動了。也可以對vimdiff等可執行程式,進行此類封裝。
還有一個更好的方法,不必改變原來的可執行檔名。在你的/home/myName/soft/下建立一個bin目錄,專門存放你自己安裝的所有可執行檔的連結。並把這個/home/myName/soft/bin目錄添加到~/.profile檔案的PATH變數中:PATH+=/home/myName/soft/bin。然後把shell指令碼放在這個目錄下即可,shell指令碼裡的vim71改為vim。
4. VIM可以在AIX上,實現文法高亮嗎?
不用懷疑,完全可以!
使用SecureCRT,把終端類型設定為vt100。在$VIM/vimrc裡,進行如下配置:
if &term =~ "xterm" || &term =~ "vt100" || &term =~ "ansi"
if has("terminfo")
set t_Co=8
set t_Sf=^[[3%p1%dm
set t_Sb=^[[4%p1%dm
else
set t_Co=8
set t_Sf=^[[3%dm
set t_Sb=^[[4%dm
endif
endif
注意^[是這樣輸入的:Ctrl+v,按Esc鍵,詳情可以在VIM中執行命令:help xterm-color。
5. 預設安裝的VIM,已經可以在AIX上查看中文。但當游標在中文上移動時,中文會變成亂碼,怎麼辦?
例如正常顯示是這樣的:
圖二、
當游標在“//或邊界覆蓋”上移動時,會變成下面這個樣子:
圖三、
研究了很多方法,最後發現把SecureCRT的字型改成新宋體,可以解決這個問題,注意字元集要選擇CHINESE_GB2312那個:
圖四、
6. 在AIX上安裝的VIM中,能否做到,在執行x命令或Backspace命令時,一次刪除一個漢字?
這個問題,研究了很久,網上有說到設定ecoding的方法(前提了安裝VIM時,指定了--enable-multibye選項),這個方法在我的LINUX虛擬機器上,是有效(但還是要求字型為新宋體):
"suport chinese language
set fileencodings=ucs-bom,utf-8,cp936,latin1 "VIM所開啟的檔案的編碼,按順序解釋
set encoding=cp936 "VIM的內部編碼,即緩衝區裡的檔案的編碼
set fileencoding=cp936 "VIM用何種編碼來儲存檔案
set termencoding=cp936 "終端的編碼類別型
7. 在AIX上安裝的VIM中,map映射鍵失效,怎麼辦?
這是終端的鍵盤選擇不正確所致。解決方案,在SecureCRT中,類比鍵盤選擇“Xterm”:
圖五、
但非常苦惱的是,在我工作的AIX伺服器上,這個方法不起作用!用h,l命令,要移動兩次才能越過一個漢字,用Backspace要執行兩次,才能刪除一個漢字,很痛苦!
看到這篇文章的朋友,如果你們有解決的方法,請給我留言,感激不盡!
------------------------------------------------------------------------------------------------------------------------------
我的編譯方法:
$ prtconf
中顯示CPU Type: 64-bit
但是設定CFLAGS=-q64不行,編譯的時候提示一個庫在32位下什麼的不能用,就沒設這個參數
設定
$ export CFLAGS="-qlanglvl=extc99"
$ ./configure --prefix=/home/ud090401/vim73 --enable-multibyte --disable-gui --without-x --disable-xsmp --with-features=huge
$ make
$ make install