立志在linux有所建樹,就必須要熟悉linux文字編輯利器vi
基本上 vi 共分為三種模式,分別是『一般模式』、『編輯模式』與『指令列命令模式』三種!
· 一般模式:以 vi 處理一個檔案的時後,一進入該檔案就是一般模式了。在這個模式中,你可以使用『上下左右』按鍵來移動游標,您可以使用『刪除字元』或『刪除整行』來處理檔案內容,也可以使用『複製、貼上』來處理您的檔案資料。
· 編輯模式:在一般模式中可以處理刪除、複製、貼上等等的動作,但是卻無法編輯的!要等到您按下『i, I, o, O, a, A, r, R』等字母之後才會進入編輯模式。注意了!通常在 Linux 中,按下上述的字母時,在畫面的左下方會出現『 Insert 或 Replace 』的字樣,才可以輸入任何字來輸入到您的檔案中!!而如果要回到一般模式時,則必須要按下『Esc』這個按鍵即可退出編輯模式。
· 指令列命令模式:在一般模式當中,輸入『 : 或 / 』就可以將游標移動到最底下那一行,在這個模式當中,可以提供您『搜尋資料』的動作,而讀取、存檔、大量取代字元、離開 vi 、顯示行號 等等的動作則是在此模式中達成的!
...........................
vi操作指南
立志在linux有所建樹,就必須要熟悉linux文字編輯利器vi
基本上 vi 共分為三種模式,分別是『一般模式』、『編輯模式』與『指令列命令模式』三種!
· 一般模式:以 vi 處理一個檔案的時後,一進入該檔案就是一般模式了。在這個模式中,你可以使用『上下左右』按鍵來移動游標,您可以使用『刪除字元』或『刪除整行』來處理檔案內容,也可以使用『複製、貼上』來處理您的檔案資料。
· 編輯模式:在一般模式中可以處理刪除、複製、貼上等等的動作,但是卻無法編輯的!要等到您按下『i, I, o, O, a, A, r, R』等字母之後才會進入編輯模式。注意了!通常在 Linux 中,按下上述的字母時,在畫面的左下方會出現『 Insert 或 Replace 』的字樣,才可以輸入任何字來輸入到您的檔案中!!而如果要回到一般模式時,則必須要按下『Esc』這個按鍵即可退出編輯模式。
· 指令列命令模式:在一般模式當中,輸入『 : 或 / 』就可以將游標移動到最底下那一行,在這個模式當中,可以提供您『搜尋資料』的動作,而讀取、存檔、大量取代字元、離開 vi 、顯示行號 等等的動作則是在此模式中達成的!
一般模式: 移動游標
h 或 向左方向鍵 游標向左移動一個字元
j 或 向下方向鍵 游標向下移動一個字元
k 或 向上方向鍵 游標向上移動一個字元
l 或 向右方向鍵 游標向右移動一個字元
[Ctrl] + [f] 螢幕『向前』移動一頁(常用)
[Ctrl] + [b] 螢幕『向後』移動一頁(常用)
[Ctrl] + [d] 螢幕『向前』移動半頁
[Ctrl] + [u] 螢幕『向後』移動半頁
+ 游標移動到非空格符的下一列
- 游標
/word 向游標之後尋找一個字串名稱為 word 的字串。(常用)
?word 向游標之前尋找一個字串名稱為 word 的字串。
:n1,n2s/word1/word2/g 在第 n1 與 n2 行之間尋找 word1 這個字串,並將該字串取代為 word2 !(常用)
:1,$s/word1/word2/g 從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !(常用)
:1,$s/word1/word2/gc 從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !且在取代前顯示提示字元給使用者確認(conform)是否需要取代!(常用)
一般模式: 刪除、複製與貼上
x, X x 為向後刪除一個字元, X 為向前刪除一個字元(常用)
nx 向後刪除 n 個字元
dd 刪除游標所在的那一整列(常用)
ndd 刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列(常用)
d1G 刪除游標所在到第一行的所有資料
dG 刪除游標所在到最後一行的所有資料
yy 複製游標所在的那一行(常用)
nyy 複製游標所在的向下 n 列,例如 20yy 則是複製 20 列(常用)
y1G 複製游標所在列到第一列的所有資料
yG 複製游標所在列到最後一列的所有資料
p, P p 為複製的資料在游標下一行貼上,P 則為貼在游標上一行!(常用)
J 將游標所在列與下一列的資料結合成同一列
c 重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]
u 複原前一個動作。(常用)
進入編輯模式
i, I 插入:在目前的游標所在處插入輸入之文字,已存在的文字會向後退;(常用)
a, A 增加:由目前游標所在的下一個字開始輸入,已存在的文字會向後
退:(常用)
o, O 插入新的一行:從游標所在的下一行枝行首開始輸入文字;(常用) r, R 取代:r 會取代游標所在的那一個字元;R會一直取代游標所在的文字,直到按下 ESC 為止;(常用)
Esc 退出編輯模式,回到一般模式中(常用)
指令列命令模式
:w 將編輯的資料寫入硬碟檔案中(常用)
:w! 若檔案屬性為『唯讀』時,強制寫入該檔案
:q 離開 vi (常用)
:q! 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
:wq 儲存後離開,若為 :wq! 則為強制儲存後離開(常用)
:e! 將檔案還原到最原始的狀態!
ZZ 若檔案沒有更動,則不儲存離開,若檔案已經經過更動,則儲存後離開!
:w [filename] 將編輯的資料儲存成另一個檔案(類似另存新檔)
:r [filename] 在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』這個檔案內容加到游標所在行後面
:set nu 顯示行號,設定之後,會在每一行的首碼顯示該行的行號
:set nonu 與 set nu 相反,為取消行號!
n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例
如[ :! ls /home ]
OK!會這些指令就已經很厲害了,因為常用到的指令也只有不到一半!通
常 vi 的指令除了上面 VBird 註明的常用的幾個外,其它是不用背的,
你可以做一張簡單的指令表在你的螢幕牆上,一有疑問可以馬上的查詢呦
一個案例練習
來來來!測試一下您是否已經熟悉 vi 這個指令呢?請依照底下的需求進
行您的指令動作( 請注意,該檔案為 Mandrake 9.0 所附上的檔案內容,
如果是其它的 distribution ,可能結果會不太一樣! ),然後看一下結
果在螢幕前面顯示什嗎?
請在 /root 這個目錄下建立一個名為 vitest 的目錄;
進入 vitest 這個目錄當中;
將 /etc/man.config 拷貝到本目錄底下;
使用 vi 開啟本目錄下的 man.config 這個檔案;
在 vi 中設定一下行號;
移動到第62 行,向右移動 40 個字元,請問您看到的雙引號內是什麼目
錄?
移動到第一行,並且向下搜尋一下『 teTeX 』這個字串,請問他在第幾行?
接著下來,我要將 50 到 100 行之間的 man 改為 MAN ,並且一個一個
挑選是否需要修改,如何下達指令?
修改完之後,突然反悔了,要全部複原,有哪些方法?
我要複製 51 到 60 行這十行的內容,並且貼到最後一行之後;
刪除 11 到 30 行之間的 20 行;
將這個檔案另存成一個 man.test.config 的檔名;
去到第 29 行,並且刪除 15 個字元;
請問目前的檔案有多少行與多少字元?
儲存後離開吧!
整個的步驟可以如下所示:
mkdir /root/vitest
cd /root/vitest
cp /etc/man.config .
vi man.config
: set nu
先按下 62G ,再按下 40 + 向右鍵,會看到『/dir/bin/foo』
先按下 1G ,然後按下 /teTeX 搜尋,會看到他在第 51 行!
:50,100s/man/MAN/gc
(1)簡單的方法可以一直按 u 回複到原始狀態,(2)使用不儲存離開 :q!
之後,再重新讀取一次該檔案
51G 然後在 10yy 之後按下 G 到最後一行,再給他 p 貼上十行!
11G 之後,再給他 20dd 即可刪除 20 行了;
:w man.test.config
29G 之後,再給他 15x 即可刪除 15 個字元;
135行,共 3903 個字元 :wq!
如果您的結果都可以查的到,那麼 vi 的使用上面應該沒有太大的問題啦
!剩下的問題會是在…..打字練習….