本站内容有下面分类知识,欢迎您的到来^_^

shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言

设soyo123为首页 收藏本站
当前位置:|主页>shell编辑器>

vi-Input Mode

百度收藏 QQ搜藏

Vi 的 input mode 算是三種狀態中最單純的了。基本上,就是一般的文字輸入;要進入 input mode,除了【 i 】﹝ insert ﹞和【 a 】﹝ append ﹞之外,一般常用的還有【 o 】和【 O 】。【 o 】會在下一列輸入文字,【 O 】則是在上一列輸入文字。一但進入 input mode 以後,你就只能不斷輸入文字,而無法控制游標移動。

特殊控制字元
在 input mode 時,先按【 Ctrl-V 】,螢幕上會出現 ^。再按【 Enter 】,【 Esc 】或【 Ctrl-L 】,在螢幕上可見 ^M,^[ 或 ^L。這些都是特殊控制字元,它們代表標準的 ASCII 控制碼。雖然看來像是兩個符號﹝一個 ^ 和一個 M ﹞,用 h 和 l 左右移動看看,就知道它們其實是一個符號。
Tab
將游標一次跳到一列中的某些位置的動作,叫作 tab,因為這個動作常在作表格﹝ table ﹞時發生。這些特定的位置稱作 tabstop。Tab 主要是為了讓表格看起來整齊易懂而存在的。也有許多人利用 tab 來控制程式原始碼,增加可讀性。
在 vi 中,當你輸入控制碼 ^I,vi 便會作 tab,使游標移到下一個 tabstop。一般而言,當你按【 Tab 】時,vi 就會作 tab,在文章中會放入控制碼。雖然在 tabstop 和 tabstop ﹝或是某個字元和下一個 tabstop ﹞之間有一段空白,這些空白並不是由若干空格字元造成,而是由一個控制碼造成。你可以試著用游標移動看看,就會發現這只是一個字元。

Tabstop 的位置在每一列的第 n*t + 1 格。其中 n 是非負整數,t 由 vi 的一個參數 ts 決定。今日絕大多數的設定為 t=8。這代表兩個 tabstop 之間的距離是 8 格。如果你要改變設定,下指令 :set ts=t,這樣 ts 的設定就會變成 t。在此 n 只能是自然數。請讀者自行試驗看看修改了 ts 以後,會發生什麼變化。

參數
在 vi 中有許多參數可以設定,所謂的參數,就類似 windows 中的選項。參數往往不會改變你的編輯內容,而是改變你的編輯的環境。雖然你的螢幕看起來不一樣,但是存到檔案中的結果是一樣的。例如之前提及的 ts,不管你如何設定,儲存的檔案都不會有影響。所有的 tab 都會存成一個控制碼 ^I。
參數的設定,要經過 line mode,要進入 line mode,在 command mode 中按【 : 】就會進入 line mode。所以之前的指令是由 : 開始的,因為本文還沒有打算介紹 line mode,所以一切經過 line mode 的動作都會用這種表示法帶過去。

在 command mode 中輸入指令 :set all 可看到此刻 vi 的所有參數設定值。因為篇幅有限,所以只再介紹一個參數。在 line mode 中,輸入 set sm,這樣一來,每當你輸入 ) 或 }, vi 便會自動把標移動到對應的 ( 或 {,一秒後移回,如果沒找到,就會發出一聲嗶。


換列
通常螢幕上每列恰有 80 格。所以在 input mode 中連續輸入超過 80 個字元時會超過螢幕寬度。 vi 的標準反應是將第 81 個字元顯示在螢幕的下一列的第一格,依此類推。在 command mode 中用 j 或 k 試試,就會發現這些看起來像兩列的字,在計算機內部仍被視為同一列。
以軟體而言,一列必須以【 Enter 】結束, UNIX 使用一控制碼 ^J ﹝ Linefeed ﹞, PC 使用兩碼 ^M 、 ^J﹝ Carriage-Return Linefeed ﹞來記錄一列的結束。理論上 vi 可以接受任意長度的列。

要是設定參數 wm=m。則當輸入到螢幕右端 m 格之內時,進入此範圍的字 (word) 會整個被移到下一列;也就是,vi 自動加入一個 【 Enter 】。這個動作叫 autowrap。原始設定為 wm=0,意即不作 autowrap。 vi 不接受負的 m 值。輸入中文文件時,wm 參數沒什麼大用。

若在編輯當中有任何系統訊息發生,例如郵差按鈴或有人想聊天,可先回到 command mode,按【 Ctrl-L 】重畫螢幕,螢幕重畫後,雜訊便會被清除。有些終端機程式對中文的支援並不是很好,常常會導致文字破碎,這時候你也可以按【 Ctrl-L 】重畫螢幕,可以讓文字看起來回復正常。


上一篇:Vi-基本操作 下一篇:vi-移動
power by soyo123 2007-2008