網路城邦
上一篇 回創作列表 下一篇   字體:
[SHELL] 我出的 vi 初級考題
2006/07/20 15:17:56瀏覽1922|回應5|推薦1

利用 vi 開啟檔案:
( ) .在 UNIX 命令列執行下面的命令,可以以唯讀的模式開啟檔案axmi168.4gl。
view axmi168.4gl

( ) .在 UNIX 命令列執行 vi axmi169.4gl,可以編輯檔案 axmi169.4gl。

( ) .開啟檔案進入 vi 的編輯畫面後,如果畫面上出現了大量的亂碼,表示
   該檔案有可能為二進位的可執行檔。

( ) .可以在 UNIX 命令列以 vi -b 編輯所有 UNIX 上的所有二進為可執行檔案,
並將裡面的所有資料以十六進位的方式顯示,以方便編輯該二進位檔案。

( ) .在命令列下 vi +/g_sql axmi168.4gl 和 vi -c /g_sql axmi168.4gl
的意義相同,都是開啟檔案後,搜尋檔案中的g_sql字串,並將游標移動到
找到的第一個 g_sql字串的位置上。

由命令模式(command mode)進入輸入模式(insert mode)的方式及其差異:
( ) .進入 vi 後,可以用下面的字母進入輸入模式(insert mode)
a, A, i, I, s, S, o, O, r, R, c, C
其中,字母 a, A 取自 Append 的字首,意即將資料輸入在某位置之後
字母 i, I 取自 Insert?的字首,意即將資料輸入在某位置之前
字母 o, O 取自 Open 的字首,加入新的一行
字母 s, S 取自 Substitude?的字首,意即將資料作替換
字母 r, R 取自 Replace?的字首,進入輸入模式中的取代模式(REPLACE)
字母 c, C 取自 Change?的字首,的命令,可以輸入所要取代的範圍

( ) .利用 a 進入輸入模式,則游標會自動往後移動一個字元。

( ) .利用 A 進入輸入模式,則游標會自動移動到游標所在英文單字之後的位置上。

( ) .利用 i 進入輸入模式,則游標會停在原位置上。

( ) .利用 I 進入輸入模式,則游標會自動移動到游標所在英文單字之前的位置上。

( ) .利用 s 進入輸入模式,則 vi 會自動幫你刪除游標所在的一個字母。

( ) .利用 S 進入輸入模式,則會自動刪除游標所在英文單字。

( ) .利用 o 進入輸入模式,則 vi 會自動幫你刪除游標所在的那一行裡的所
有資料,並且在該游標所在位置新增一行。

( ) .利用 O 進入輸入模式,則 vi 會自動在游標的上一行新增一行。

( ) .利用 r 進入輸入模式,則可以對已經存在的游標所在行文字作修改。

( ) .利用 R 進入輸入模式,可以對已經存在的所有文字作修改,直到按了 ESC 鍵。

( ) .利用 c$ 或 大寫字母 C,可以將游標所在位置資料到行尾全部刪除,並
進入輸入模式。

( ) .利用 c^( + 數字鍵 6) 或 c1(數字 1)可以將游標所在位置到行首
的所有資料都刪除,並進入輸入模式。

( ) .利用 cc 可以將游標所在行整行刪除,並進入輸入模式。

在命令模式(command mode)裡的基本操作:
游標控制部分
( ) .除了可以利用 h (往左), j (往下), k (往上), l (往右)控制游標移
動外,上可以透過鍵盤上的上下左右的箭頭按鍵,控制游標的移動。

( ) .100j 表示要將游標移動到第一百行的位置上。

( ) .100J 表示要將游標移動到第一百行的行首位置。

( ) .100G 表示要將游標往下移動一百行。

( ) . w 表示要將游標,往前移動一個英文單字。

( ) . b 表示要將游標,往後移動一個英文單字。

( ) . 1 (數字 1)將游標移動到該行的行首,所以和 ^(shift鍵+數字 6) 的功用
完全相同。

( ) . $ 將游標移動到該行的行尾。

( ) . /g_zxx 會尋找現在編輯中檔案裡所有的 g_zxx 字串。

( ) . ?g_zxx 會尋找現在編輯中檔案裡所有的 g_zxx 字串,
所以 /g_zxx 和 ?g_zxx 的作用完全相同。

( ) . mq 表示在該行設定一個書籤(mark)名稱為 q ,可以用於檔案中的快速移動
以及複製或刪除時,定區域之用。

( ) . 'q (單引號+q) 和 `q (反單引號 (esc鍵下面的那個按鍵)+q),都是用來
快速的將游標移動到書籤 q 的位置,功能完全相同,vi 特別提供了兩種
操作方式,好讓使用者選擇適合自己操作習慣的方式操作。

( ) . vi 一共提供了 a-z 這 26 個書籤名稱,以供使用者使用。

對文章內容進行整行刪除,複製,貼上以及移動的處理
( ) . x 會將游標所在的字元刪除。


( ) . dw 會刪除一個英文單字。

( ) . D 和 d0(數字 0) 將游標所在位置到行尾的資料刪除。

( ) . dd 將游標所在行整行刪除。

( ) . yw 會將游標所在的單字存入暫存區中。

( ) . "ayy 會將游標所在行的資料存入暫存區 a 中。

( ) . vi 提供了 a - z 共 26 個暫存區,供使用者儲存資料。

( ) .小寫字母 p 表示 paste 將預設暫存區的資料,貼到游標所在行的下一行

( ) .大寫字母 P 表示 paste 將預設暫存區的資料,貼到游標所在行的上一行

( ) . "zp 和 "zP 的功用完全相同,可以讓使用者將存放在暫存區 z 裡面的資料
貼到所編輯的文章中。

( ) . yy會將游標所在行的該行資料複製到暫存區 " 裡,所以
p 和 ""p的作用完全相同。


取消上一個動作與再次執行
( ) . u 和 U 取自 Undo ,代表取消上一個執行過的動作。

( ) . ctrl + r 則可以將利用 undo 取消的動作,再度重複執行。

複合鍵
( ) . ctrl + d ( d 表示 down ),往畫面下方捲動一整個畫面。

( ) . ctrl + b ( b 表示 backward ),往畫面上方捲動一整個畫面。

( ) . vi 為了方便使用者即使在輸入模式(Insert Mode)也能快速的移動畫面
所以,捲動畫面的複合鍵也可以在輸入模式中使用。

ex 模式(ex Escape Mode)的操作
( ) .:1,$s/g_zxx/g_zxy/ 是一個錯誤的命令,vi 無法執行。

( ) .:10,11m2 可以將第 10 行到第 11 行的資料移到第 2 行的位置。

ex 模式中取消上一個動作與再次執行
( ) .:u 和 :undo 可以用於取消上一個執行過的動作。

( ) .:r 和 :redo 可以用於重複執行,上一個被 undo 取消的動作。


( ) .當您同時編輯一個以上的檔案時,可以用 :buffers,列出所有編輯中的檔案。

( ) .:f (取自files 的字首) 也可以用於列出所有編輯中的檔案。

假設:buffers 裡的資料如下,請回答其後的問題:
:buffers
1 - "axmi168.4gl" line 1
2 % "axmi169.4gl" line 100
3 - "axmi170.4gl" line 0
4 #- "axmi171.4gl" line 20
Press RETURN or enter command to continue

( ) .其中的 % 表示現在正在編輯的檔案, # 表示上一個編輯的檔案。

( ) .可以利用 :e# 進行編輯上一個檔案,在這個例子裡,就是編輯檔名為
"axmi168.4gl" 的檔案內容。

( ) .除了可以透過 :e# 編輯上一個檔案之外,也可以透過 :b# 或 :vi# 達到切換
編輯檔案,回到編輯上一個編輯過的檔案。

( ) .在這個例子中 :e4 , :e# 以及 :e axmi171.4gl 的作用完全相同。

( ) .在這個例子中 :b4 , :b# 以及 :b axmi171.4gl 的作用完全相同。

( ) .在這個例子中 :vi4, :vi# 以及 :vi axmi171.4gl 的作用完全相同。

( ) .:bd4 表示將 buffer 中的編號第四的檔案由 buffers 裡面移除。
其中 bd 取自英文的 buffer delete ,意即從buffers裡移除
在這個操作範例中表示移除 axmi171.4gl 這一個檔案。

( ) .:n 表示要編輯現在檔案的下一個,:N 表示要編輯現在檔案的上一個,
所以,:2n 在這個例子中,表示要編輯第四個檔案。

( ) .:registers 可以列出檔案中所有設定過以及系統自行設定的的暫存區資料。

假設暫存區裡的資料如下,請回答其後的問題:
:registers
--- Registers ---
"" dsc business consulting
"1 vi is a text editor
"2 #Description :本程式的作業目的在於
"a LET g_zxx.zxx01 = g_zxx_t.zxx01
": b#
"% axmi168.4gl
"# axmi171.4gl
Press RETURN or enter command to continue

( ) .其中的 ": 為上一個在 ex mode 執行的命令。

( ) .""為 vi 預設的暫存區,只有透過 yw, y$, 或 yy 這樣沒有指定所要儲存的
暫存區的複製的命令時,才能將資料儲存到這個暫存區裡。

( ) . vi 總共提供了35個暫存區,供使用者任意使用,也就是 1-9, a-z 這
35個暫存區,只是一般常用為 a-z 這 26 暫存區。

( ) .:marks 可以列出所有使用者定義的記號名稱。

Visual Mode
( ) .vi 提供了三種 visual mode,可以用來設定要操作的區域,並以區域反白表示
可以很方便的設定要複製,刪除的區域
1.小寫字母 v -- 利用字元(character)作區域的標示動作(basic visual mode)
應用範例:CONSTRUCT g_wc on table_field 時,欄位位置的移動
2.大寫字母 V -- 利用行的觀念作區域的標示動作(visual line)
應用範例:不需透過ex mode 定義所要複製或刪除的區域,就可以
完成大區域的複製動作
3.複合鍵 ctrl + v -- 可以標示一整個方塊區域(visual block)
應用範例:.per 檔裡的欄位位置調整


( ) .利用visual mode定好區域之後,可以透過命令模式(command mode)
對該區域作刪除(d),複製到暫存區(y or "ay)。

( ) .利用visual mode定的區域,沒有辦法透過 ~ ,改變其中英文字母的大小寫。

( ) .利用visual block定的區域,沒有辦法透過命令模式中的 c (change) 作修改。

輸入控制碼
( ) .在 za 檔,用來作為分隔的 ^A 可以透過複合鍵 ctrl+v+a 輸入控制碼 ^A。

( ) .要刪除 windows 附加於檔尾的 ^M,可以利用複合鍵 ctrl+v+m 輸入 ^M
並利用 :%s/^M//g,將檔案中所有的 ^M 通通刪除。

--




Sincerely C.S.Julius
Think Do, I Will

富翔資訊管理顧問有限公司
( 知識學習語言 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=csjulius&aid=361114

 回應文章

喵仔 ' - ^ ~
等級:8
留言加入好友
2007/02/02 14:04

真的是不想看也不想懂

 . . . 


C.S.Julius
等級:8
留言加入好友
Re : VT
2006/11/06 11:41
Re: VT 0. 作業系統: 讓使用者可以使用電腦軟體 ... 如 : Windows 98, XP, Apple, UNIX, Linux 1. UNIX 是用 C 語言開發出來的大型主機的電腦作業系統 通常都是那種貴死人不償命的硬體在用的 而且每家大廠的作業系統還有自己的特色 ... UNIX 是兩個主要國際作業系統(如 :System V)標準下的產品 2. VI 是一個功能強大的文書編輯器, 特別是用在寫程式和管理 UNIX 系統 文書編輯器就如同 Windows 裡面的 NotePAD ... VI 當然沒有 NotePAD 那麼兩光啦 ... 而且 VI 通常只會出現在 UNIX 家族的平台裡 通常 VI 的使用族群有以下幾個特色 : 一. UNIX 家族大型作業系統的管理員 (Administrator) 二. UNIX 家族大型系統下程式撰寫人員 (Programmer) 三. 沒用過 VI 的會覺得 VI 超難用 ... 用過 VI 的會超熱愛 VI ~~~ 3. 所以,上面的那些不是火星文 ... 其實,Julius 是來自 M 星雲的第 631027 號行星的 ~~~ 那是 Julius 家鄉的溝通語言 ~~
Sincerely C.S.Julius
Think Do, I Will
網路倒扁大串聯 ... 敦請總統知所進退 ~~~ 罄竹難書 無能無恥 台灣之恥

在父母的夢想與理想中溺斃了!


夏麗絲
等級:1
留言加入好友
><
2006/11/04 22:46

這是什麼???

我完全看不懂

這是木星文嗎?????   @@



C.S.Julius
等級:8
留言加入好友
考新進人員的ㄚ ...
2006/08/02 22:51
這是我當初在產中玩 vi 玩出了一些心得後
我家老大叫我出的 vi 考題 ...
可是後來我家老大看完後,覺得我出的題目太難了 ...
所以,好像就沒有下文了 ...
那個時候,我還準備要出高階考題 ...
因為初階被評太難,所以我的高階好像就沒寫了 ...

不過相較於當初我進產中的時候,看到的基礎 vi 教學
我的部分真的是有點難 ...

在父母的夢想與理想中溺斃了!


阿倫
等級:7
留言加入好友
好久沒考試了
2006/08/02 13:48

這是要考誰阿?

我也來試著答看看.