Linux的文字編輯器-VI

來源:互聯網
上載者:User

Linux的文字編輯器-VI
一、VI簡易說明
在Linux環境下,我們一直建議使用文本狀態來處理 Linux 的系統設定問題,因為不但可以讓您比較容易瞭解到 Linux 的健全狀態,也比較容易瞭解整個設定的基本精神,更能『保證』您的修改可以順利的被運行 ( 這裡要再次的強調,不同的 Linux distribution 各有其不同的附加軟體,例如 Red Hat 的 userconf, Linuxconf, ntsysv 與 setup 等等,而 Caldera 則有 COAS 等等,因此,如果您只會使用此種類型的軟體來控制您的 Linux 系統時,當接管不同的
Linux distribution 時,呵呵!那可就苦惱了! ) 所以,在 Linux 的系統中使用文字編輯器來編輯您的 Linux 參數設定檔,所以說,系統管理員至少應該要熟悉一種文本處理器的!

由Linux是什麼介紹中,我們知道 Linux 與 Unix 系統中的參數檔案幾乎都是 ASCII 碼的『純文字』檔案!因此,利用簡單的文字編輯器就可以馬上修改 Linux 的參數檔案囉!然而,與 Windows 不同的是,如果您用慣了 Microsoft Word 或 Corel Word perfect 的話,那麼除了 Xwindows 裡面的編輯器(如 xemacs )用起來尚可應付外,於 Linux 的文本狀態下,會覺得檔案編輯器都沒有 Windows 程式那麼方便。( 註:什麼是 ASCII 的純文字檔案呢?說穿了,就是您開啟的檔案可以將內容給您看到的檔案,而不是呈現亂碼的檔案,那就是純文字檔案了!當您以
Windows 的 word 存一個檔案時,在 DOS 的情況下使用 type ,嗯!完全不知到內容是什嗎?因為會出現很多的亂碼,那並非是純文字檔案,而如果以 word 在儲存檔案時,選擇『純文字類型』,嗯!那就可以使用 type 看到該檔案的內容了!總之,純文字檔案相當的容易修改就是了! )

無論如何,要管理好 Linux 系統,純文字的手工設定仍然是需要的!所以請您千萬不要嫌麻煩,努力的將下文參詳一下吧!以下我們以最常見到的 vi 這套文本軟體來介紹 Linux 底下的文本編輯操作。 ( 註: vi 是 Unix 預設的文字編輯器,當然,也是 Linux 預設的文字編輯器! )

基本上 vi 共分為三種狀態,分別是『一般狀態』、『編輯狀態』與『指令列命令狀態』三種!

•『一般』狀態:以 vi 處理一個檔案的時後,一進入該檔案就是一般狀態了。在這個狀態中,你可以使用『上下左右』按鍵來移動游標,您可以使用『刪除字元』或『刪除整行』來處理檔案內容,也可以使用『複製、貼上』來處理您的檔案。

•『編輯』狀態:在一般狀態中可以處理刪除、複製、貼上等等的操作,但是卻無法編輯的!要等到您按下『i, I, o, O, a, A, r, R』等字母之後才會進入編輯狀態。注意了!通常在 Linux 中,按下上述的字母時,在畫面的左下方會出現『 INSERT 或 REPLACE 』的字樣,才可以輸入任何字來輸入到您的檔案中!而如果要回到一般狀態時,則必須要按下『Esc』這個按鍵即可退出編輯狀態。

•『指令列命令』狀態:在一般狀態當中,輸入『 : 或 / 』就可以將游標移動到最底下那一行,在這個狀態當中,可以提供您『搜尋檔案』的操作,而讀取、儲存檔案、大量取代字元、離開 vi 、顯示行號 等等的動作則是在此狀態中達成的!

二、vi使用舉例
我們怎麼使用 vi 建立一個檔案名稱為 test.txt 的檔案呢?我們底下以一個簡單的例子來進行說明吧!

2.1.使用 vi 進入一般狀態;
[root @test root]# vi test.txt
直接輸入『 vi 檔案名稱』即可進入 vi 了!如所示,左下角還會顯示這個檔案目前的狀態!如果是建立檔案會顯示 [New File],如果是已存在的檔案,則會顯示目前的檔案名稱、行數與字元數,例如:『"/etc/man.config" 145L, 4614C』

 

2.2.按下 i 進入編輯狀態,開始編輯文本;
在一般狀態之中,只要按下 I, o, a 等字元,就可以進入編輯狀態了!在編輯狀態當中,您可以發現在左下角會出現 –INSERT- 的畫面,那就是可以輸入任一字元的提示囉!這個時候,鍵盤上除了 [Esc] 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以您可以進行任何的編輯囉!(註:在 vi 裡面, [tab] 這個按鈕所得到的結果與空白字元所得到的結果是不一樣的,特彆強調一下!)

2.3.按下 [ESC] 按鈕回到一般狀態;
好了,假設我已經按照上面的樣式給他編輯完畢了,那麼應該要如何退出呢?是的!沒錯!就是給他按下 [Esc] 這個按鈕即可!馬上你就會發現畫面左下角的 – INSERT – 不見了!

2.4.在一般狀態中按下 :wq 儲存後離開 vi !
OK,我們要儲存檔案了,儲存檔案並離開的指令很簡單,輸入『:wq』即可儲存檔案離開!(注意了,按下 : 該游標就會移動到最底下一行去!)這時你在提示字元後面輸入『 ls -l 』即可看到我們剛剛建立的 test.txt 檔案啦!整個圖示有點像底下這樣:

如此一來,您的檔案 test.txt 就已經建立起來囉!很簡單吧!需要注意的是,如果您的檔案許可權不對,例如為 -r--r--r-- 時,那麼可能會無法寫入,那麼可以使用『強制寫入』的方式嗎?可以!使用『:wq!』多加一個驚歎號即可!不過,需要特別注意呦!那個是在『您的許可權可以改變』的情況下才能成立的!關於許可權的概念,請參考http://www.chinaitlab.com/www/news/article_show.asp?id=8313

三、命令指令說明

如前所述,所謂的命令列或命令狀態,就是在最下面一行沒有顯示『--INSERT--』或者『--REPLACE--』字樣的時候。通常在命令列中的指令有下面幾種:(注意,當按下『:』 時,游標會自動移動到螢幕的最下面一行!)

通常 vi 的指令除了上面註明的常用的幾個外,其他是不用背的,你可以做一張簡單的指令表在你的螢幕牆上,一有疑問可以馬上的查詢。

四、一些複雜的練習
測試一下您是否已經熟悉 vi 這個指令呢?請依照底下的需求進行您的指令操作( 請注意,該檔案為 Mandrake 9.0 所附上的檔案內容,如果是其他的 distribution ,可能結果會不太一樣! ),然後看一下結果在螢幕前面顯示什嗎?

4.1練習要求
1. 請在 /root 這個目錄下建立一個名為 vitest 的目錄;
2. 進入 vitest 這個目錄當中;
3. 將 /etc/man.config 拷貝到本目錄底下;
4. 使用 vi 開啟本目錄下的 man.config 這個檔案;
5. 在 vi 中設定一下行號;
6. 移動到第62 行,向右移動 40 個字元,請問您看到的雙引號內是什麼目錄?
7. 移動到第一行,並且向下搜尋一下『 teTeX 』這個字串,請問他在第幾行?
8. 接著下來,我要將 50 到 100 行之間的 man 改為 MAN ,並且一個一個挑選是否需要修改,如何下達指令?
9. 修改完之後,突然反悔了,要全部複原,有哪些方法?
10. 我要複製 51 到 60 行這十行的內容,並且貼到最後一行之後;
11. 刪除 11 到 30 行之間的 20 行;
12. 將這個檔案另存成一個 man.test.config 的檔案名稱;
13. 去到第 29 行,並且刪除 15 個字元;
14. 請問目前的檔案有多少行與多少字元?
15. 儲存後離開吧!

4.2整個的步驟可以如下所示:
1. mkdir /root/vitest
2. cd /root/vitest
3. cp /etc/man.config .
4. vi man.config
5. : set nu
6. 先按下 62G ,再按下 40 + 向右鍵,會看到『/dir/bin/foo』
7. 先按下 1G ,然後按下 /teTeX 搜尋,會看到他在第 51 行!
8. :50,100s/man/MAN/gc
9. (1)簡單的方法可以一直按 u 回複到原始狀態
(2)使用不儲存離開 :q! 之後,再重新讀取一次該檔案
10. 51G 然後在 10yy 之後按下 G 到最後一行,再給他 p 貼上十行!
11. 11G 之後,再給他 20dd 即可刪除 20 行了;
12. :w man.test.config
13. 29G 之後,再給他 15x 即可刪除 15 個字元;
14. 135行,共 3903 個字元
15. :wq!
如果您的結果都可以查的到,那麼 vi 的使用上面應該沒有太大的問題啦!剩下的問題會是在…..打字練習….

五、FAQs
我要在某個檔案的第 34 行向右移動 15 個字元,應該在一般狀態下達什麼指令?
答: 先 11G 到第 11 行後,再按下 15 + 向右鍵,或 15l 亦可!

在 vi 裡面, PageDown 按鈕可以使用什麼按鍵組合來取代?
答: [Ctrl] + f 可以向後翻一頁

如何去到 vi 該檔案裡面的頁首或頁尾?
答: 頁首為 1G 而頁尾為 G 即可!

如何在一行中,移動到行頭及行尾?
答:移動到行頭,按 0 ,移動到行尾按 $ 即可!

進入編輯狀態的按鈕?
答:i, I, o, O, a, A, R

vi 裡面, r 有什麼功能?
答: 取代游標所在的那個字元!

如何將目前的頁面另存新檔案?
答: :w filename

在 linux 底下最常使用的文字編輯器為 vi ,請問如何進入編輯狀態?
答:o 在一般狀態底下輸入: i, I, a, A 為在本行當中輸入新字元;(出現 –Insert- )
o 在一般狀態當中輸入: o, O 為在一個新的一行輸入新字元;
o 在一般狀態當中輸入: r, R 為取代字元!(左下角出現 –Replace-)

如何由編輯狀態跳回一般狀態?
答:[Esc]

若上下左右鍵無法使用時,請問如何在一般狀態移動游標?
答:h, j, k, l

若 [pagedown] [ pageup] 在一般狀態無法使用時,如何往前或往後翻一頁?
答:[Ctrl] + [f]
[Ctrl] + [b]

如何到本檔案的最後一行、第一行;本行的第一個字元、最後一個字元?
答:G, 1G, 0, $

如何刪除一行、n行;如何刪除一個字元?
答:dd, ndd, x 或 X (dG 及 d1G 分別表示刪除到頁首及頁尾)

如何複製一行、n行並加以貼上?
答:yy, nyy, p 或 P

如何搜尋 string 這個字串?
答:o ?string (往前搜尋)
o /string (往後搜尋)

如何取代 word1 成為 word2,而若需要使用者確認機制,又該如何?
答:o :1,$s/word1/word2/g 或
o :1,$s/word1/word2/gc (需要使用者確認)

如何讀取一個檔案 filename 進來目前這個檔案?
答::r filename

如何另存新檔案成為 newfilename?
答::w newfilename

如何儲存檔案、離開、儲存檔案後離開、強制儲存檔案後離開?
答::w; :q: :wq; :wq!

如何設定與取消行號?
答::set nu
:set nonu

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.