http://cygwin.com/index.html ????? 還是看官網!
?
?
很多用windows的朋友不習慣于用linux的開發環境。雖然很樂意嘗試一下,但是往往怕 linux系統打亂了自己的正常生活:1〉裝linux系統把windows系統給搞壞了,導致自己無法正常生活;2>linux開發上手太難,寫出第一個helloworld不亞于java的難度,環境配置摸不著頭腦。對于此,我的看法是:路不管平還是陡,終歸你要走的,如果你愿意投入到linux開發的社群中來,不會安裝linux系統,不會配置工作環境是不能想象的。(事實上,確實要了解很多東西的原理,不然很難排錯:諸如,硬盤引導器的引導原理、分區結構原理及linux分區結構和文件系統、環境變量的設置、種類繁多的壓縮包安裝包的解壓安裝方法、用戶管理權限管理等常用命令、以至于驅動安裝系統中文化等等異常瑣碎的東東)。
(
http://www.fanqiang.com
)
本文試圖跳過這個難走的步驟,啟用一個win環境下的linux仿真器(和linux下面的命令行開發環境基本一致),用短短的20分鐘的時間,教你做出一個純正的linux下gcc編譯的helloworld。就象是買點心前先嘗嘗味道,不也是一件很愉快的事情么?(注:cygwin事實上不僅有此模擬功能,它也是移植unix<-->win程序的一個很有效的工具,也有人用它來做嵌入式系統開發)
一、cygwin是什么?
?? 這個問題你最好google一下"cygwin的歷史",或許能夠獲得更為詳盡的答案。簡而言之,cygwin是一個在windows平臺上運行的 linux模擬環境,是cygnus solutions公司開發的自由軟件(該公司開發了很多好東西,著名的還有eCos,不過現已被Redhat收購)。插一句廢話,很多朋友不明白 linux和unix的區別和聯系,在此也簡要介紹一下。UNIX是一個注冊商標,是要滿足一大堆條件并且支付可觀費用才能夠被授權使用的一個操作系統; linux是unix的克隆版本,是由其創始人Linus和諸多世界知名的黑客手工打造的一個操作系統。為什么linux和unix之間有很多軟件可以很輕松的移植?因為linux也滿足POSIX規范,所以在運行機制上跟unix相近。???
?? 以下引用網上的一段話(出處:
http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx
),
用于說明cygwin的工作機制:cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成并解釋win32的目標文件。然后,他們要把這些工具移植到windows平臺上去。一種方案是基于win32 api對這些工具的源代碼進行大幅修改,這樣做顯然需要大量工作。因此,他們采取了一種不同的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在里面,也就是說,他們基于 win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主機上的交叉編譯器來生成可以在 windows平臺上運行的工具集。以這些移植到windows平臺上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟件移植到windows上來。這樣,在windows平臺上運行bash和開發工具、用戶工具,感覺好像在unix上工作。關于cygwin實現的更詳細描述,請參考
http://cygwin.com/cygwin-ug-net/highlights.html
二、cygwin的安裝。
? cygwin的安裝文件很容易通過google找到。目前國內的網站上有"網絡安裝版"和"本地安裝版"兩種。標準的發行版應該是? 網絡安裝版。兩者并無大不同,下面介紹一下安裝的過程。
? step1. 下載后,點擊安裝文件(setup.exe)進行安裝,第一個畫面是GNU版權說明,點"下一步(N)—>",
進入安裝模式選擇畫面。
? step2. 安裝模式有"Install from Internet"、"Download form Internet"、
"Install from Local Directory" 三種。"Install form Internet"就是直接從internet上裝,適用于網速較快的情況。如果你和我一樣網速不是很快,或者說裝過之后想把下載的安裝文件保存起來,下次不再下載了直接安裝,就應該選擇"Download form Internet",下載安裝的文件(大約40M左右)。
事實上,所謂的"本地安裝版",也是別人從網上下載全部文件后打的包(適用于中國國情嘛^_^)
??
? step3. 接下來是選擇安裝目的路徑和安裝源文件所在的路徑,之后就進入了選擇安裝包所在的路徑。
注意了阿,這里可是重頭戲。我第一安裝的時候就是沒有看清這一步,結果沒有把gcc裝進去,導致沒法編譯文件。
?? + All? Default
????? + Admin Default
?????? ....
????? + Devel?? Default
????? + Editors Default
????? ....
如上圖所示,你在這個TreeView的某個節點上雙擊,就可以改變它的狀態,如Default、Install、Uninstall、Reinstall四種狀態。默認的都是Default狀態,很多工具的默認狀態都是不安裝。
在這里我選擇了在All這一行上后面的Default上點Install,全部安裝,以免后患。(注意:這里的樹形控件和win下面的不同,你試試點在All上點 和 在All這一行后面的Default上點,會有不同的響應)
? step4. 點下一步,安裝成功。它會自動在你的桌面上建立一個快捷方式。
? 好了,下面就開始我的linux旅程了。雙擊cygwin的快捷方式進入系統。
首先介紹幾個簡單的linux命令。
pwd?? 顯示當前的路徑
cd??? 改變當前路徑,無參數時進入對應用戶的home目錄
ls??? 列出當前目錄下的文件。此命令有N多參數,比如ls -al
ps??? 列出當前系統進程
kill? 殺死某個進程
mkdir 建立目錄
rmdir 刪除目錄
rm??? 刪除文件
mv??? 文件改名或目錄改名
man?? 聯機幫助
less? 顯示文件的最末幾行
由于linux下面的命令大多都有很多參數,可以組合使用。所以,每當你不會或者記不清楚改用那個參數,那個開關的時候,可以用man來查找,比如,我想查找ls怎么使用,可以鍵入
$? man ls
系統回顯信息如下:
LS(1)????????????????????????? FSF????????????????????????? LS(1)
NAME
?????? ls - list directory contents
SYNOPSIS
?????? ls [OPTION]... [FILE]...
DESCRIPTION
?????? List information about the FILEs (the current directory by
?????? default).? Sort entries alphabetically if none of -cftuSUX
?????? nor --sort.
?????? -a, --all
???????????? do not hide entries starting with .
?????? -A, --almost-all
???????????? do not list implied . and ..
?????? -b, --escape
???????????? print octal escapes for nongraphic characters
?????? --block-size=SIZE
???????????? use SIZE-byte blocks
:
?
?
好了,多說無意,讓我們來寫一個hello world程序。
# cd
進入了/home/administrator目錄,我當前的登陸帳號是administrator
# mkdir source
建立一個叫做source的子目錄
# cd source
進入 /home/administrator/source
# vim hello.c
啟動vim編輯器,來編寫程序。好了,現在有必要簡要介紹一下vim。
在linux界,有兩大編輯器最有歷史。其一是vi,其二是emacs。vi現在已經演化成了vim,比當前的vi更為強大。vim和emacs是兩種截然不同的東西,vim強調用簡潔的命令來完成功能,無論是查找、替換、
正則表達式匹配、編譯、鏈接、排錯、函數間跳轉等等等等都在命令行中完成,并且它把方向鍵也集成在了hjkl四個鍵之上,可以說,用了vim基本上可以不用鼠標了:p emacs則是在功能強大上做文章,版本控制、模擬多種編輯環境、對文本進行各種操作,可謂之一個強大的文本處理系統。emacs是用諸如Ctrl+ Alt+K 之類的組合鍵來控制的;vim則是用se(set 的縮寫)等簡潔命令來控制的。
由于cygwin中只提供了vim(能不能自己裝emacs我還沒有試過),我們就先體驗一下vim吧:p
vim加載文本文件后分為命令模式和插入模式兩種。插入模式,顧名思義就是輸入編輯文本;命令模式,則是輸入各種vim的控制命令,常用的有:
i 進入編輯模式
h 左移
j 下移
k 上移
l 右移
w 存盤
q 退出
! 強調執行
有些命令是可以組合使用的,如果你修改了某個文件,想存盤退出,則可以使用wq;如果你想放棄存盤,直接退出則可以使用q! 好了大家體驗一下吧,記住:從編輯模式退回命令模式按"Esc",再按":",在輸入指令,從命令模式進入編輯模式用i,初次使用vim肯定很難受,嘿嘿,不過用多了就習慣了,確實很省勁。
我們編輯hello.c文件,輸入:
#include
int main(void) {
printf( "Hello World!");
}
然后,輸入wq命令退到命令行。
輸入編譯指令:
# gcc hello.c -o hello
編譯成功后可以看一下
# ls
看到hello.exe了吧,嘿嘿。
好,讓我們運行看看。
# ./hello
效果如何?不錯吧? :)
okey,現在玩一個C++的hello world,
# vim world.cpp
輸入:
#include
using namespace std;
void main() {
cout << "Hello World!";
}
編譯C++程序要用g++
# g++ world.cpp -o world
運行一下哈,
# ./world
如何,效果不錯吧?諸位都是高手,走到這步應該編些簡單程序都不成問題了吧:p
好了,關于如何編寫makefile文件,如何用gdb下次再說了。
VIM 使用簡介
Vi IMproved (VIM) 是 Bram Moolenaar 開發的與 UNIX 下的通用文本編輯器 vi 兼容并且更加強大的文本編輯器。它支持語法變色、正規表達式匹配與替換、插入補全、自定義鍵等等功能,為編輯文本尤其是編寫程序提供了極大方便。VIM 可以運行在“任何”操作系統上,包括我們常用的 Windows 和 UNIX/Linux。一旦掌握了 VIM,你就掌握了一項跨平臺的利器。
盡管 VIM 功能十分強大,但對于剛接觸它的人尤其是用慣類似 Windows 的 notepad 的人來說,VIM 并不十分易于掌握,畢竟它兼容的是 vi 而不是 notepad。本文旨在介紹 VIM 中我所了解的用法,希望有更多的人喜歡 VIM。應該指出的是,VIM 中有太多的功能和命令,有許多你并不用的著,因此沒有記的必要,有些我也不知道,這要靠你來發現,關鍵是多看 :help ,多試。另外,取決于你的 VIM 的版本以及編譯安裝時的設置,文中講述的某些功能或命令在你的 VIM 中也許并不存在,如有需要請升級。
1. vi 的基本用法
vi 的屏幕區域分為兩個部分:最下面一行是命令行,一般用于提示信息或命令行輸入;除此之外為正文顯示區域。跟 notepad 不同的是,vi 中存在兩種模式:普通(Normal)模式和插入(Insert)模式。
進入 vi 后默認即為普通模式。新手一般初次進入 vi 后就想輸入一串字符,結果發現 vi 一連串莫名其妙的反應。其實,在 vi 的普通模式下,任何按鍵包括普通字符都表示某個命令,并不表示在當前光標處插入字符。常用的命令有:(注意區分大小寫)
: 進入命令行
i 或 a 進入插入模式。區別是:i 進入插入模式后,光標在當前字符前面; a 進入插入模式后,光標在當前字符后面
h j k l 分別是光標左移、下移、上移、右移(一般來說你不會用到它們來移動光標,按方向鍵就可以了)
x 刪除一個字符
dd 刪除一行
J 刪除本行的回車符,把下一行并入本行末尾
r字符 替換光標所在字符為新字符
^ $ 分別是光標移到行首和行末
數字G 移動光標到第若干行,如果直接按 G 則移動到最后一行
在普通模式中,命令以按鍵形式輸入。而在命令行中,命令以字符串形式輸入。下面是常用的命令行:
:q 退出! (更確切的說應該是關閉當前文件)
:w 文件名 存盤。如果還是保存為當前文件,不必寫文件名
:wq 存盤退出
:new 文件名 打開或新建文件(同時關閉當前文件)。如果不指定文件名或者文件名不存在則是新建文件
:help 幫助! 看完后用 :q 關掉窗口。可以在 help 后面加某個幫助主題的名稱,如 :help dd 或 :help help
還有一點是,如果某個命令得到警告(拒絕執行),則要在命令的命令詞后加嘆號表示強制執行。比如你修改過文件,但又想放棄存盤并退出,如果輸入 :q, vi 會告訴你文件已修改,這時,你只能輸入 :q! 退出。又如用 :w! a.txt 表示把當前文件存為 a.txt 而不管 a.txt 是否已經存在。
插入模式就不用多說了,添加你的新內容吧。不過,你也許會發現 BackSpace 鍵和 Delete 鍵的運用很受限制,也不能像 notepad 那樣選擇、復制和粘貼。這些都是由于這是 vi 的標準,后面我們將看到 VIM 擴展的功能可以解決這些問題。記住按 ESC 退出插入模式,回到普通模式。
2. 復制和粘貼
為了便于選取文本,VIM 引入了可視(Visual)模式。要選取一段文本,首先將光標移到段首,在普通模式下按 v 進入可視模式,然后把光標移到段末。需要注意,光標所在字符是包含在選區中的。這時可以對所選的文本進行一些操作,常用的(可視模式)命令有:
x 或 d 剪切(即刪除,同時所選的文本進入剪貼板)
y 復制
r字符 所有字符替換為新字符
u U ~ 分別是所有字母變小寫、變大寫、反轉大小寫
> < 分別是縮進和反縮進
當輸入了命令以后,VIM 將回到普通模式,這時可以按 p 或 P 進行粘貼。普通模式下有關復制和粘貼的命令:
v 進入可視模式
p 或 P 在當前位置粘貼剪貼板的內容,p 粘在光標所在字符后面,P 粘在前面
不得不承認,雖然引入了可視模式,復制和粘貼在 VIM 中仍然是比較麻煩的操作,這也許是 VIM 唯一的缺點。:-) 此外,VIM 還引入了選擇 (Select)模式,跟可視模式類似。結合一些鍵的定義和選項設置,可以實現跟 notepad 相同的復制和粘貼的使用習慣。限于篇幅和水平,在此不提。
3. VIM 的定制
VIM 在 vi 的基礎上擴展了許多功能和命令,提供了許多選項。但是有些功能默認是關閉的,有些選項可能也不符合個人的使用習慣。為此,我們需要編寫一個 vimrc 文件。在 DOS/Windows 版本的 VIM 中,這個文件應放在 VIM 的目錄下,文件名為“_vimrc”。在 UNIX 版本 的 VIM 中,這個文件一般可以放在用戶的個人主目錄下,文件名為“.vimrc”。VIM 啟動時將會把 vimrc 文件中的每一行作為命令行依次執行,我們可以在該文件中加入若干命令,使 VIM 啟動時自動開啟一些有用的功能,定義一些常用的快捷鍵等。
下面是一個 vimrc 文件的示例:(請注意區分瀏覽器的換行與實際的換行。)
" 設置 Backspace 和 Delete 的靈活程度,backspace=2 則沒有任何限制
set backspace=2
" 設置在哪些模式下使用鼠標功能,mouse=a 表示所有模式
set mouse=a
" 設置路徑,在 f 等命令中涉及此參數
" 對于 Windows 編程,path 可設為如
" set path=.,"C:/Program Files/Microsoft Visual Studio/vc98/Include",,
" 對于 UNIX 編程,path 可設為如下
set path=.,/usr/include,/usr/include/qt,,
" 打開光標的行列位置顯示功能
set ruler
" 設置跳格距離
set tabstop=4
" 設置自動縮進格數
set shiftwidth=4
" 打開自動縮進功能
set autoindent
" 設置哪些鍵可以行間繞轉,如下設置則 Backspace 和方向鍵等均可行間繞轉
set whichwrap=b,s,h,l,<,>,[,]
" 根據當前文件語法自動變色。VIM 識別上百種文本文件的語法,如 html、c++、java 等
syntax on
" 以下是個人習慣,定義 等鍵,便于插入模式和可視模式之間的切換
" (1) 使 x d y 自動返回插入模式
vnoremap y "ryi
vnoremap x "rxi
vnoremap d di
" (2) 普通模式和插入模式下均可按 粘貼
imap :if col(".")!=1 exe 'normal "rp'elseexe 'normal "rP'endif`[i
nmap "rP
" (3) 普通模式和插入模式下均可按 進入可視模式
imap :if col(".")!=1 exe 'normal lv'elseexe 'normal v'endif
nmap v
下面給出我常用的 vimrc 文件。另外,你的 VIM 安裝目錄下很可能也帶有一個默認的 vimrc 文件,你都可以參考。如果遇到沒有見過的命令或者參數,可以自己看看 :help 。
* vimrc
4. VIM 的其它命令
要真正使用 VIM,光靠 vi 的基本命令當然不行,下面就來介紹更多的命令。以下的命令,有些是 VIM 特有的,有些在 vi 中也存在,我就不加區分了。其中,以“:”開頭表示該命令在命令行輸入,以“i”開頭表示這是插入模式下的命令,其它則是普通模式下的命令。表示按 Ctrl+X。
4.1 使用幫助
在 :help 中,遇到超連接可以按 Ctrl+] 跳轉
在 :help 中,按 Ctrl+T 往回跳轉
4.2 打開多個文件
:split 文件名 切分出一個新窗口,打開指定文件。如果省略文件名,則仍顯示當前文件,可用于同時觀察文件的不同部分。(注意跟 :new 的區別)
f 切分顯示光標所指的文件名,VIM 會在 path 中搜索該文件名,比如常用它打開 #include 語句中的文件
當同時打開幾個文件時,按 在各窗口之間切換
_ 當同時打開幾個文件時,按 _ 使當前窗口最大化
:set scrollbind 設置卷動綁定屬性。所有設置了卷動綁定屬性的窗口將一起卷動。可以用 :set noscrollbind 解除綁定
4.3 撤銷和恢復
編輯過程中出現錯誤在所難免,不過沒有關系,VIM 允許無限次的撤銷。只要你沒有關閉文件,你甚至可以一直撤銷下去,回到幾個小時以前剛打開這個文件開始工作時的狀態。
u 撤銷(Undo)上次所做的修改
恢復(Redo)上次撤銷的內容
4.4 字符串搜索替換
/字符串 向下搜索字符串
?字符串 向上搜索字符串
* # 分別是向下和向上搜索光標所指的詞
n 重復上一次搜索
:起始行,結束行s/搜索串/替換串/g 從起始行到結束行,把所有的搜索串替換為替換串
:set ignorecase 設置忽略字母大小寫。可以用 :set noignorecase 取消忽略字母大小寫
例如 /hello 從當前光標位置開始向下搜索 hello,不帶字符串的命令 / 可重復上一次搜索,相當于 n。又如 :1,$ s/hello/hi/g 把全文中的 hello 改為 hi,其中 $ 表示最后一行。另外,你還可以先進入可視模式選擇一段文本,按:進入命令行并輸入 s/hello/hi/g ,VIM 將在選區中進行替換操作。
搜索字符串用的是正規表達式(Regular expression),其中許多字符都有特殊含義:
/ 取消后面所跟字符的特殊含義。比如 /[vim/] 匹配字符串“[vim]”
[] 匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母
[^] 匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符
. 匹配任意字符
* 匹配前一字符大于等于零遍。比如 vi*m 匹配“vm”、“vim”、“viim”……
/+ 匹配前一字符大于等于一遍。比如 vi/+m 匹配“vim”、“viim”、“viiim”……
/? 匹配前一字符零遍或者一遍。比如 vi/?m 匹配“vm”或者“vim”
^ 匹配行首。例如 /^hello 查找出現在行首的單詞 hello
$ 匹配行末。例如 /hello$ 查找出現在行末的單詞 hello
/(/) 括住某段正規表達式
/數字 重復匹配前面某段括住的表達式。例如 /(hello/).*/1 匹配一個開始和末尾都是“hello”,中間是任意字符串的字符串
對于替換字符串,可以用“&”代表整個搜索字符串,或者用“/數字”代表搜索字符串中的某段括住的表達式。
舉一個復雜的例子,把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫法:
:%s/abc/(.*/)xyz/xyz/1abc/g
:%s//(abc/)/(.*/)/(xyz/)//3/2/1/g
其它關于正規表達式搜索替換的更詳細準確的說明請看 :help pattern 。
4.5 插入補全
在插入模式下,為了減少重復的擊鍵輸入,VIM 提供了若干快捷鍵,當你要輸入某個上下文曾經輸入過的字符串時,你只要輸入開頭若干字符,使用快捷鍵, VIM 將搜索上下文,找到匹配字符串,把剩下的字符補全,你就不必敲了。這樣,編程序時你起多長的變量名都沒關系了,:-) 而且還可以減少輸入錯誤。我認為,插入補全是 VIM 最為突出的一項功能。
i 向上搜索,補全一個詞。例如,上文中出現過 filename 這個詞,當你想再輸入 filename 時,只要按 f 即可。假如 VIM 向上搜索,找到以 f 開頭的第一個匹配不是 filename,你可以繼續按搜索下一個匹配進行補全。當然,如果你想一次就成功,你可以多輸入幾個字符比如 filen 再按補全
i 向下搜索,補全一個詞
i 補全一行。比如你寫過一行 for (int i = 0; i <> 即可。如果補全出來的不是你想要的那一行,你可以按 或 選擇上一個或下一個匹配行
i 在文件系統中搜索,補全一個文件名
如果按 或 補全一個詞,在當前文件中沒有找到匹配,VIM 將搜索 #include 語句中的文件,而文件的位置將在 path 中搜索。
4.6 鍵的定義
在 VIM 中你可以定義一個鍵,按了這個鍵等于按了某一串預定的鍵。比如
:map! ddi
表示如果你在插入模式下按 就相當于連續按了 ddi,這將會使 VIM 退回到普通模式,刪除一行,再進入插入模式。
map 命令有許多變化形式,每種變化形式所定義的鍵只在某些模式下有效,而在其它模式下無效。你需要根據情況使用正確的變化形式:
:nmap 鍵只對普通模式有效
:imap 鍵只對插入模式有效
:vmap 鍵只對可視模式有效
:cmap 鍵只在命令行下有效
:map 鍵在普通模式和可視模式都有效
:map! 鍵在插入模式和命令行下都有效
還要注意,如果你定義 :map d di 這將引起循環定義錯誤。這時,你需要使用 :noremap d di 來定義。同樣,noremap 也有對不同模式的變化形式。
比如,你想在文件的每一行的倒數第二個字符處插入字符串“abc”,你可以定義
:nmap $hiabcj
在普通模式下按一次將會:光標移到行末,光標左移一格,進入插入模式,輸入“abc”,退回到普通模式,光標下移一行。不停地按將解決問題。這是我臨時處理多行重復操作的常用手段,當然,這是一種笨辦法。:-) 而上文寫到的對 的定義則是 map 更復雜的用法。你還可以定義
:map :w:!gcc -o %< -I/usr/include/qt -lqt %
:map :!./%<
實現按 編譯當前文件,按 執行。
在插入補全當中提到的補全一行需要按 ,如果你覺得麻煩,你可以定義
:inoremap
減少擊鍵次數。同樣,對 也可以作類似定義。
4.7 其它命令
:!命令行 執行一條外部命令
. 在光標當前位置處重復上一次操作
i后續字符 輸入特殊的 ASCII 字符或鍵。除了插入模式外,也適用于命令行。后續字符可以是鍵盤上的任意鍵,也可以是三位的十進制數字表示字符的 ASCII 碼
i命令 執行一個普通模式的命令,執行完畢后回到插入模式
i 跳轉到光標所指標識符的定義行。比如你在編程時遇到一個函數 CreateWindow,想看它的定義語句,你就可以在它上面按 i,VIM 將打開新窗口,把光標移到它定義的地方。當然,前提是在當前文件或它的 #include 文件中存在 CreateWindow 的定義。這也牽涉到 path 的設置。不過,VIM 找得不一定很準
K 看光標所指標識符的 man 幫助頁
i 把上一行對應列的字符抄下來
i 把下一行對應列的字符抄上來(寫這一行時我就用了 )
光標所指整數加一
光標所指整數減一
光標返回到以前的位置。相當于光標移動的“撤銷”
光標返回到后來的位置。相當于光標移動的“恢復”
進入可視模式,選取一個矩形區域。該命令通常用于對多行進行列操作。接著按 I 可以在塊前的每一行同時插入字符;按 A 可以在塊后的每一行同時插入字符;按 x、d 或 y 可以剪切或復制;等等
:X 對當前文件加密
5. VIM 6.0 的一些新特性
2001 年 9 月 26 日發布的 VIM 6.0 增加了一些以往沒有的新特性。下面僅僅是一些簡單的介紹,更詳細的描述請自己看 :help 。
* 打開目錄
在 VIM 6.0 中,:new 和 :split 等命令不但可以打開普通文件,還可以打開目錄。一個目錄打開以后將列出里面的文件信息,可以按回車繼續打開相應的文件或者子目錄,也可以按 ? 得到其它目錄操作(修改文件名,刪除文件等)的幫助。
* 折疊
當一個文本太長而你又對其中很長一大段內容不關心的話,可以把你不關心的那些行折疊起來,讓它們從你的視線中消失。被折疊的行將以一行顯示代替,例如:
+--217 行: 2. VIM 的定制 ---------------------
折疊可以有多種方式控制,可以通過設置 foldmethod 選項的值來改變。默認情況下 foldmethod=manual 為手工折疊。下面介紹幾個使用折疊的最簡單的命令:
(可視模式下) zf 手工創建折疊。在可視模式下選擇一段文本,然后按 zf 可以手工創建一個折疊
方向鍵左或右 打開折疊。普通或插入模式下,在折疊行上橫向移動光標將打開被折疊的行
zc 關閉折疊
* 垂直切分窗口
:vsplit 文件名 垂直切分窗口。跟 :split 命令相似,但新窗口與原窗口左右并列。
* 更多的正規表達式
VIM 6.0 比以前增加了許多新的正規表達式,其中我認為最有用的是換行匹配符 /n。以前的版本中,正規表達式只能在同一行上匹配。現在,只要顯式地給出 /n,正規表達式可以跨多行。
* diff 模式
專門用于比較編輯兩個或多個內容相近的文件的模式。一般來說,比如你要比較編輯 A 跟 B 兩個文件,你可以命令行啟動 vim - d A B 或者這樣:先打開文件 A,然后 :vsplit 打開文件 B,對文件 A 和 B 都輸入命令 :diffthis。這時 VIM 將非常清晰的對比顯示出兩個文件的不同之處,編輯起來十分方便。
仔細一看,這個 diff 模式動用了 VIM 許許多多的特性,包括卷動綁定,折疊和語法變色等等。好高級啊!
我所熟悉的 VIM 的功能已經介紹得差不多,剩下的要靠你自己來學習了。其實,VIM 的功能還有很多很多。還是那句話,多看 :help ,多試。 VIM 的幫助還是挺容易看的,相信你看了以后會有更多的驚喜。另外,VIM 的主頁上有不少有用的技巧提示,也是一個很好的去處。如果你有什么心得或者新發現,歡迎跟我討論。
希望你喜歡 VIM。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
