2010年11月29日 星期一

linux 傳統 vi 編輯器

懶得自己打字敘述過程,因此 COPY別人的講解。

 CDrouter 內建的 vi 指令對「初學者」的困難度非常高,需要特別去適應,才能夠分辨。

以下 vi 文章取自「https://www.daemon-land.idv.tw/phpBB2/viewtopic.php?p=331&sid=48922c6804fe4c82efb65eca9e2423cc 」

vi是一種文字模式全螢幕文字編輯軟體(Text Editor)。
對初學者來說,CDrouter 內建的這款「古老 vi 版本」是個很難用的工具,一般花些時間熟練,才能得心應手。之所以介紹「vi」因為下章節?將會用到,而不熟悉的人?將會無法繼續。

1. vi是Unix上的標準文字編輯軟體,不管哪個版本的Unix系統都會提供。想靠開發Unix的軟體混飯吃,必須熟練vi。

2. vi難用的原因之一,是只有文字模式,不能使用滑鼠。但也正因為如此,熟練者不用移動手去操作滑鼠,寫起程式來特別快.

3. vi難用的原因之二,是同一個畫面分成三種操作模式,每種模式又可下達複雜指令,初學者常會搞混。但vi所提供的複雜指令,對寫程式特別好用,一經試用便覺威力無窮。

另一個跟vi很像的軟體叫vim,算是vi的加強版,vi有的功能vim都有,還可以使用游標鍵。此處只介紹vi。


vi在操作上分成下面三種模式,你若搞不清楚現在在哪種模式,只用按鍵盤左上角的ESC鍵,就可以跳到Command Mode

1. Command mode( c-mode):

您一進入 VI 就是處於 c-mode,只能下按鍵指令,不能輸入文字。

這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。

2. Input mode(i-mode):

按 i 就會進入 i-mode,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到 c-mode。

3. Ed mode(command-line mode,e-mode):

按冒號:(別忘了 Shift 鍵)就會進入 e-mode,左下角會有一個冒號:出現,可下 ed 指令。ed是Unix裡另一種非常古老的行模式Text Editor。所謂行模式,是一次只能觀看編輯一行文字,之所以會有這種模式,是因為遠古時代終端機的游標只能往下走(就像DOS視窗!),所以編輯軟體 就只好這樣設計了。vi是由ed改良來的,因此保有ed的指令。

也是按 Esc 回 c-mode。反正正常狀態都是處於 c-mode,這樣才不會把您辛苦打字的文章給隨便搞亂掉。

4. 開檔:

vi test.txt

或進入 vi 後,使用冒號命令 :e test.txt,就可以編輯 test.txt 這個檔。

如果 test.txt 不存在的話,就會開一個以 test.txt 為名的新檔案。


5.游標移動:

c-mode之下:h向左,j向下,k向上,l向右,Ctrl-F下一頁,Ctrl-B上一頁,Ctrl-G顯示檔案的狀態,$到行尾,^到行頭

e-mode之下:輸入數字n就會移到第n行

6. 編寫文件:

在c-mode底下可用的命令:

u: undo上一個命令

o: 在此行的後面新增一行

O: 在此行的前面新增一行

i: 在游標的前一個位置插入字元

I: 在此行的開頭插入字元

a: 在游標的後一個位置插入字元

A: 在此行的最後面加入字元

r: 更改游標所在的字元

R: 覆蓋游標後的字元(一直打字就一直蓋掉,直到按ESC)

cl: 改掉一個字元

cw: 把游標所在的一整個字改掉(此字最後一個字母會變成$, 直到按ESC前的所有輸入都會用來改掉這一個字)

cc: 改掉游標所在的一整行

x: 刪除一個字元

dw: 刪除一整個字

dd: 刪除一整行

D: 刪除到行尾

yy: 複製一整行

yw: 複製一整個字

Y: 複製一整行

p: 貼在游標後(下)

P: 貼在游標前(上)

.: 重複上一個編輯命令

/: 向下搜尋(會在螢幕左下角出現/符號,只要輸入要找的字然後Enter即可)

?: 向上搜尋

n: 搜尋下一個

N: 搜尋上一個

以上命令除uoOD以外,前面都可以加上數字,表示此命令執行的次數,如5dd表示刪除五行,5yw複製五個字

7.e-mode下面的命令:

如果您寫好您的文件,就可以按Esc回到 c-mode,然後按:到e-mode,在e-mode底下的命令為

w: 存檔

w 檔名: 另存到檔名

q: 離開vi

wq: 存檔然後離開

q!: 強迫離開vi

w!: 強迫存檔

x: 存檔後離開, 但若檔案沒有修改,則不會存檔

!gcc test.c: !可用來呼叫shell執行命令, 此例中呼叫gcc編譯test.c

shell: 呼叫shell(回到命令列), 在shell中打exit則回到vi

r 檔名: 將檔名的內容讀到游標所在的行後

1,$s/abc/def/g: 由第一行到最後一行將所有的abc取代成def,若最一個/g不打, 則只取代每行的第一個

1,10s/abc/def/g:由第一行到第十行將所有的abc取代成def

五、vi 的使用

簡易的 vi 使用法:

vi 有兩個 mode , command mode 與 insert mode 。平常我們在輸入時所使用的
是 insert mode , 而下特殊指令如複製和刪除則是採用 command mode 。

由 command mode 進入 insert mode 有四個常用的指令: i , a , o , 跟 O 。
i 是由游標的前面開始做 insert text 的動作。 a 是由游標的後面開始做 insert
text 的動作。 o 則是在游標下方開啟新的一行來編輯,同樣的,O 是由游標的上
方來開啟新的一行來編輯。結束一個編輯動作可以用 Escap 來回到 command mode ,
此時可以做移動,刪除,複製,搜尋等編輯指令。

vi 的移動一般用上下左右鍵便可達到,然而它也有其自己的指令鍵:

h : 向左移一個字元
j : 向上移一個字元
k : 向下移一個字元
l : 向右移一個字元
0 : 移至行首
$ : 移至行尾

vi 的刪除指令有幾種,如下:

x : 刪除游標上的字元。
X : 刪除游標的前一個字元。
dd: 刪除該行。
dw: 刪除游標所在之單字。
d0: 刪除自行首至游標所在之所有字元。
d$: 刪除自游標至行尾之所有字元。

vi 可以使用 yy 來將游標所在行存起來,然後將游標移至所要貼的行之處按
p , 則剛才 mark 的行會被複製出現在游標之下。( 如果使用 P 則會出現在
游標之上。)

在指令模式中,你可以在任何前面提到的指令前面加上大於零的數字 n,則你
所做的動做將會被重覆 n次,如要刪除十行可以按 10 dd , 要複製十行可以用
10 yy , 要將同樣的文字重覆寫十次可以用 10 i ,然後離開 insert mode 之
後就會將剩下的九次重覆寫出來。

在 command mode 要存入一個已寫好的檔案可以使用'ZZ' , 則它將會把你編好
的檔案寫入後離開 vi .

在 vi 中搜尋一個字串可以使用 / , 在斜線後跟上你所要搜尋的字串,它就會
找到你所要的字串,如要在搜尋相同字串按 n 即可。使用? 來搜尋可以使vi往
回找出你所需要的字串。

ex 的指令

在 vi 中亦可使用 ex 的指令,只要在 command mode 時以冒號 : 做開頭,
即可使用 ex 的指令。常用 ex 指令如下:

:l1 , l2 d 刪除自行l1至行l2的文字。
:l1 , l2 s /patern1/patern2/[g] 將自行l1至行l2的文字中,有 patern1 的字
串改為 patern2 的字串,如無 g 則僅更換每一行所 match 的第一
個字串。如有 g 則將每一個字串均做更換。

:l1 , l2 co l3 將自行l1至行l2的文字 copy 到行 l3 。
:l1 , l2 mo l3 將自行l1至行l2的文字 move 到行 l3 。
:w [file] 將編輯的文字存入檔案中。
:n [file] 引入下一個檔案。
:q 離開

沒有留言:

張貼留言

歡迎討論

HR , NO!Human Resources,NO!

※※ 這樣內容,上手會困難嗎?※※ 我想到什麼?就寫什麼!※※

※對於資訊!我想到什麼?就寫什麼!

如果困難的話?

有需要技術文件 DarkMan 蒐集了不少!
存在FTP共享。想下載?請洽DarkMan信箱取得下載帳號。※



人性的理由

上句:不修一切法,如如是己身。傳其法,授其使,說其名,淪為其用。
下句:你寫得出來其意就傳你【大神威、大魔法,無上魔道。】





網路基礎技能 - 相關連結(更新完成)

Dark 不覺得「Linux CD route 計畫」會比「思科路由」差!我認可 CD Route 計畫的實現,藉此....降低網路架設費用!

甚至「Linux CD route 計畫」更能夠實現「網路自由」的架構!


Fdisk 磁碟管理(一)共用「 Linux 與 微軟Windows」
Fdisk 磁碟管理(二)磁碟 boost loader 觀念
Fdisk 磁碟管理(三)清除磁碟分割
磁碟陣列是什麼東西?(RAID)

Linux Network
Linux 網路概要(連結版)
Linux 網路概要(抄過來)
設置網路環境 >> 資訊環境落實

MikroTik RouterOS 專業級路由系統
MikroTik RouterOS(1)
MikroTik RouterOS(2)
MikroTik RouterOS(3)
MikroTik RouterOS(4)

Linux Network Route
(一)接口設備觀念
(二)參照路由原則
(三)檢視路由
(四)Root路由器
(五)防禦對象

MikroTik RouterOS 專業級路由系統
網路卡、路由表、iptab 表、btctl show(一)「loopback 和網路卡*4」
網路卡、路由表、iptab 表、btctl show(二)拿微軟的系統route,來證明一下!
網路卡、路由表、iptab 表、btctl show(三)釋出路由方向
網路卡、路由表、iptab 表、btctl show(四)Root路由器
網路卡、路由表、iptab 表、btctl show(五)防禦對象

CD Route network
Linux CD route 網路設備配置的順序.....
Linux CD route 001 介紹
Linux CD route 002 軟體安裝
Linux CD route 003 外網
Linux CD route 004 內網
Linux CD route 005 安全
Linux CD route 006 防火牆