發(fā)信人: thinelephant (光吃不長(zhǎng)), 信區(qū): VIM
標(biāo) 題: VIM 測(cè)試題(給用 VIM 做數(shù)據(jù)處理的初學(xué)者)
發(fā)信站: 水木社區(qū) (Thu Oct 27 20:21:50 2005), 站內(nèi)
以前寫(xiě)的,主要是針對(duì)數(shù)據(jù)處理的,雖然寫(xiě)得不好,不過(guò)也發(fā)到版上留個(gè)備份啦。:-)
VIM 測(cè)試題(給用 VIM 做數(shù)據(jù)處理的初學(xué)者)
請(qǐng)回答以下操作所需的步驟或命令:
01. (4) 光標(biāo)移到最后一行
02. (4) 設(shè)置跳格(Tab)寬度為 4
03. (4) 忽略大小寫(xiě)查找字符串 elephant(本題不得使用 GUI)
04. (4) 將所有 elephant 替換為 pig(本題不得使用 GUI)
05. (4) 打開(kāi) VIM 關(guān)于正則表達(dá)式的幫助文檔
06. (4) 在閱讀 VIM 幫助時(shí)遇到鏈接如何跳轉(zhuǎn)?如何返回?
07. (6) 比較編輯兩個(gè)內(nèi)容相近的文件
08. (6) 借助外部命令 sort 將文件的行按字母順序進(jìn)行排序
09. (6) 將每一行的第一個(gè)字符與第二個(gè)字符交換
10. (6) 將當(dāng)前目錄中所有文件的文件名插入到當(dāng)前文本中
假設(shè)文件 data.txt 內(nèi)容如下:
ACDSee 000001 499.95 ACD Systems, Ltd.
Internet Explorer 000004 1999.50 Microsoft Corp.
Vi IMproved 000015 0.00 Bram Moolenaar
FlashFXP 000204 199.00 CEDsoft
請(qǐng)回答以下操作所需的正則表達(dá)式(可查閱幫助,反復(fù)嘗試):
11. (4) 匹配每行的軟件名字段
12. (4) 匹配每行的編號(hào)字段
13. (4) 匹配每行的價(jià)格字段
14. (4) 匹配每行的開(kāi)發(fā)者字段
請(qǐng)回答以下操作所需的步驟或命令:
15. (6) 交換每行的編號(hào)和價(jià)格字段
16. (8) 借助外部命令 sort 將文件的行按軟件價(jià)格進(jìn)行排序
17. (8) 將連續(xù)兩個(gè)或以上的空格替換為一個(gè)跳格字符
18. (6) 刪除每行的開(kāi)發(fā)者字段
送分題,寫(xiě)得越多越好:
19. (8) 請(qǐng)寫(xiě)出任何難以用 notepad 完成的并且你會(huì)的 VIM 功能。
============================================================================
參考答案
01. G
在 Normal 模式下按 G 快速跳到最后一行,按 gg 跳到第一行,當(dāng)然,也可以按
Ctrl-Home 和 Ctrl-End。
02. :set tabstop=4
將 Tab 設(shè)成大一點(diǎn)的寬度,比如 16,查看數(shù)據(jù)文件的時(shí)候比較有用,對(duì)齊清晰。
03. 方法一,先設(shè)置忽略大小寫(xiě),然后查找
:set ignorecase
/elephant
:set noignorecase
方法二,在前面加入 \c 表示忽略大小寫(xiě)
/\celephant
04. :%s/elephant/pig/g
g 表示如果一行有多個(gè) elephant 將全部替換,沒(méi)有 g 表示只替換每行第一個(gè)。
另外還有 i 標(biāo)志,有 i 表示忽略大小寫(xiě)。i g 這兩個(gè)標(biāo)志非?;A(chǔ)!
05. :help pattern
用 :help xxx 看一個(gè)東西幫助,提示:在 :help 后面可以嘗試按 tab 補(bǔ)全,
比如輸入 :help search 然后按 tab(一次或多次),你就可以看到
search-pattern 正是你想要看的。
06. Ctrl-] Ctrl-T
幫助里面用兩個(gè) | 括起來(lái)高亮的,比如 |pattern| 都是可以跳轉(zhuǎn)的鏈接,按
Ctrl-](按住 Ctrl 按右中括號(hào))跳進(jìn)去,再按 Ctrl-T 跳回來(lái)。
07. 在命令行下 vim -d file1.txt file2.txt 可以用比較模式查看編輯兩個(gè)文件,
或者如果在 Windows 下面,可以先選中兩個(gè)文件,然后鼠標(biāo)右點(diǎn)菜單,選
“Diff with Vim”。一般在比較某個(gè)文件的兩個(gè)版本(即是一個(gè)是以前的,
一個(gè)是修改后的)時(shí)很有用。
08. :%!sort
表示將整個(gè)文件的行用外部命令 sort 過(guò)濾一遍,不過(guò)要當(dāng)心 Windows 的 sort
命令在某些條件下會(huì)產(chǎn)生錯(cuò)誤的排序結(jié)果。
09. 方法一,用正則表達(dá)式匹配替換每行的前兩個(gè)字符
:%s/^\(.\)\(.\)/\2\1/
方法二,用塊選擇
Normal 模式下,先把光標(biāo)移到第一行第一個(gè)字符上,按 Ctrl-V 進(jìn)入塊選擇模式,
移動(dòng)光標(biāo)到最后一行第一個(gè)字符上,這時(shí)選中的是每一行的第一列字符,按 d
刪除,然后移動(dòng)光標(biāo)到第一行第二個(gè)字符,按 P(注意是大寫(xiě))粘貼,剛才刪除的
第一列就被粘到第二列上了。
10. :split .
打開(kāi)當(dāng)前目錄(. 表示當(dāng)前目錄,當(dāng)然也可以是比如 C:\ ),然后就可以將目錄
中的文件名復(fù)制粘貼過(guò)來(lái)了。
請(qǐng)把 :help pattern 那一頁(yè)幫助內(nèi)容仔仔細(xì)細(xì)閱讀 99 遍!:-)
11. 軟件名字段的特征是:位于行首;由若干個(gè)單詞組成,單詞之間用一個(gè)空格分開(kāi)。
^\S\+\( \S\+\)*
12. 編號(hào)字段的特征是:恰好六個(gè)數(shù)字。
\<\d\{6}\>
13. 價(jià)格字段的特征是:若干個(gè)數(shù)字,一個(gè)點(diǎn),若干個(gè)數(shù)字。
\d\+\.\d\+
14. 開(kāi)發(fā)者字段的特征跟軟件名字段的特征類似,但是位于行末。
\S\+\( \S\+\)*$
15. 同 09 題方法二,用塊選擇。
16. 用塊選擇將價(jià)格字段換到前面,然后用 :%!sort 排序,然后換回來(lái)。
17. :%s/ \+/\t/g (注意這里是兩個(gè)空格)或者
:%s/ \{2,}/\t/g
18. 用塊選擇,按 D(大寫(xiě))刪除。塊選擇后按 d 跟 D 的區(qū)別是:d 刪除選中的塊,
D 刪除選中的塊以及后面一直到行末的內(nèi)容。
19. 略。





