在SCO下輸入文本怎么就這么難呢,點了I不知道什么時候可以輸入,根本沒有地方告訴你是不是在文本編輯狀態(tài)下還是在命令狀態(tài)下,一個小小的左右鍵都可能導致退到命令狀態(tài)下,想從一行的最后一個字符開始插入文字,似乎是件很難的事情,當然我是新手不知道是不
在SCO下輸入文本怎么就這么難呢,點了I不知道什么時候可以輸入,根本沒有地方告訴你是不是在文本編輯狀態(tài)下還是在命令狀態(tài)下,一個小小的左右鍵都可能導致退到命令狀態(tài)下,想從一行的最后一個字符開始插入文字,似乎是件很難的事情,當然我是新手不知道是不是大家也曾經(jīng)有我這樣的煩惱,如果誰知道怎么回事或者如何做可以避免這種情況的出現(xiàn),請告訴我,謝謝!
BTW:我的系統(tǒng)是SCO 5.0.5,默認的SHELL下的VI文本編輯,
關(guān)于文本編輯VI的問題Windows系統(tǒng)
。htldm 回復于:2004-11-07 20:07:53呵呵。剛開始都這樣。等用習慣了你就知道vi的好處了。
我有個習慣,就是多按幾下ESC
zhyesno 回復于:2004-11-07 20:09:32LINUX下的VM感覺更好用。
哪種狀態(tài)都有提示。
un_xxx 回復于:2004-11-07 20:43:02我就是從LINUX過度到UNIX里面來的,所以特別難以適應,大家對于從一行的最后插入字符這個問題有辦法嗎,如果有麻煩你說下,謝謝!
sylssgw 回復于:2004-11-07 22:08:06(一)進入vi
在系統(tǒng)提示字符(如$、#)下敲入vi <檔案名稱>,vi 可以自動幫你載入所要編輯的文件或是開啟一個新
文件(如果該文件不存在或缺少文件名)。進入 vi 后螢幕左方會出現(xiàn)波浪符號,凡是列首有該符號就代
表此列目前是空的。
(二)、兩種模式
如上所述,vi存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將做為指令來處理:如輸入
a,vi即認為是在當前位置插入字符。而在輸入模式下,vi則把輸入的按鍵當作插入的字符來處理。指令
模式切換到輸入模式只需鍵入相應的輸入命令即可(如a,A),而要從輸入模式切換到指令模式,則需在
輸入模式下鍵入ESC鍵,如果不曉得現(xiàn)在是處於什麼模式,可以多按幾次 [ESC],系統(tǒng)如發(fā)出嗶嗶聲就表
示已處于指令模式下了。
付:有指令模式進入輸入模式的指令:
新增 (append)
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A: 從光標所在列最後面的地方開始新增資料。
插入 (insert)
i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列并進入輸入模式。
O: 在光標所在列上方新增一列并進入輸入模式。
(三)、退出vi
在指令模式下鍵入:q,:q!,:wq或:x(注意:號),就會退出vi。其中:wq和:x是存盤退出,而:q是直接退出,
如果文件已有新的變化,vi會提示你保存文件而:q命令也會失效,這時你可以用:w命令保存文件后再用:q
退出,或用:wq或:x命令退出,如果你不想保存改變后的文件,你就需要用:q!命令,這個命令將不保存文件
而直接退出vi。
(四)、基本編輯
配合一般鍵盤上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現(xiàn)在你應該已經(jīng)可以利用 vi 來編輯文件
了。當然 vi 還提供其他許許多多功能讓文字的處理更為方便。
何謂編輯?一般認為是文字的新增、修改以及刪除,甚至包括文字區(qū)塊的搬移、復制等等。先這里介紹 vi
的如何做刪除與修改。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作
的,先利用指令移動光標來定位要進行編輯的地方,然後才下指令做編輯。)
刪除與修改文件的命令:
x: 刪除光標所在字符。
dd :刪除光標所在的列。
r :修改光標所在字元,r 後接著要修正的字符。
R: 進入取替換狀態(tài),新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s: 刪除光標所在字元,并進入輸入模式。
S: 刪除光標所在的列,并進入輸入模式。
其實呢,在PC上根本沒有這麼麻煩!輸入跟編輯都可以在輸入模式下完成。例如要刪除字元,直接按
[Delete] 不就得了。而插入狀態(tài)與取代狀態(tài)可以直接用 [Insert] 切換,犯不著用什麼指令模式的編
輯指令。不過就如前面所提到的,這些指令幾乎是每臺終端機都能用,而不是僅僅在 PC 上。
在指令模式下移動光標的基本指令是 h, j, k, l 。想來各位現(xiàn)在也應該能猜到只要直接用 PC 的方向
鍵就可以了,而且無論在指令模式或輸入模式下都可以。多容易不是。
當然 PC 鍵盤也有不足之處。有個很好用的指令 u 可以恢復被刪除的文字,而 U 指令則可以恢復光標所
在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同。
三、附件:vi詳細指令表
(一)、基本編輯指令:
新增 (append)
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A: 從光標所在列最後面的地方開始新增資料。
插入 (insert)
i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列并進入輸入模式。
O: 在光標所在列上方新增一列并進入輸入模式。
x: 刪除光標所在字符。
dd :刪除光標所在的列。
r :修改光標所在字元,r 後接著要修正的字符。
R: 進入取替換狀態(tài),新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s: 刪除光標所在字元,并進入輸入模式。
S: 刪除光標所在的列,并進入輸入模式。
(二)、光標移動指令:
由於許多編輯工作是藉由光標來定位,所以 vi 提供許多移動光標的方式,這個我們列
幾張簡表來說明(這些當然是指令模式下的指令):
┌—————┬—————————————┬—————┐
│指令 │說明 │功能鍵 │
├—————┼—————————————┼—————┤
│0 │移動到光標所在列的最前面 │[Home] │
├—————┼—————————————┼—————┤
│$ │移動到光標所在列的最後面 │[End] │
├—————┼—————————————┼—————┤
│[CTRL][d] │向下半頁 │ │
├—————┼—————————————┼—————┤
│[CTRL][f] │向下一頁 │[PageDown]│
├—————┼—————————————┼—————┤
│[CTRL][u] │向上半頁 │ │
├—————┼—————————————┼—————┤
│[CTRL][b] │向上一頁 │ [PageUp] │
└—————┴—————————————┴—————┘
┌——┬—————————————————┐
│指令│說明 │
├——┼—————————————————┤
│H │移動到視窗的第一列 │
├——┼—————————————————┤
│M │移動到視窗的中間列 │
├——┼—————————————————┤
│L │移動到視窗的最後列 │
├——┼—————————————————┤
│b │移動到下個字的第一個字母 │
├——┼—————————————————┤
│w │移動到上個字的第一個字母 │
├——┼—————————————————┤
│e │移動到下個字的最後一個字母 │
├——┼—————————————————┤
│^ │移動到光標所在列的第一個非空白字元│
└——┴—————————————————┘
┌——┬———————————————————┐
│指令│說明 │
├——┼———————————————————┤
│n- │減號移動到上一列的第一個非空白字元 │
│ │前面加上數(shù)字可以指定移動到以上 n 列 │
├——┼———————————————————┤
│n+ │加號移動到下一列的第一個非空白字元 │
│ │前面加上數(shù)字可以指定移動到以下 n 列 │
├——┼———————————————————┤
│nG │直接用數(shù)字 n 加上大寫 G 移動到第 n 列 │
└——┴———————————————————┘
┌————┬———————————————┐
│指令 │說明 │
├————┼———————————————┤
│fx │往右移動到 x 字元上 │
│Fx │往左移動到 x 字元上 │
├————┼———————————————┤
│tx │往右移動到 x 字元前 │
│Tx │往左移動到 x 字元前 │
├————┼———————————————┤
│; │配合 f&t 使用,重復一次 │
│, │配合 f&t 使用,反方向重復一次 │
├————┼———————————————┤
│/string │往右移動到有 string 的地方 │
│?string │往左移動到有 string 的地方 │
├————┼———————————————┤
│n │配合 /&? 使用,重復一次 │
│N │配合 /&? 使用,反方向重復一次 │
└————┴———————————————┘
┌————┬———————————————————┬——————————┐
│指令 │說明 │備注 │
├————┼———————————————————┼——————————┤
│n( │左括號移動到句子的最前面 │句子是以 │
│ │前面加上數(shù)字可以指定往前移動 n 個句子 │! . ? 三種符號來界定│
│n) │右括號移動到下個句子的最前面 │ │
│ │前面加上數(shù)字可以指定往後移動 n 個句子 │ │
├————┼———————————————————┼——————————┤
│n{ │左括弧移動到段落的最前面 │段落是以 │
│ │前面加上數(shù)字可以指定往前移動 n 個段落 │段落間的空白列界定 │
│n} │右括弧移動到下個段落的最前面 │ │
│ │前面加上數(shù)字可以指定往後移動 n 個段落 │ │
└————┴———————————————————┴——————————┘
(三)、更多的編輯指令
這些編輯指令非常有彈性,基本上可以說是由指令與范圍所構(gòu)成,
電腦資料
《關(guān)于文本編輯VI的問題Windows系統(tǒng)》(http://www.oriental01.com)。例如 dw 是由刪除指令 d 與范圍 w 所組成,代表刪除一個字 d(elete) w(ord) 。
指令列表如下:
d 刪除(delete)
y 復制(yank)
p 放置(put)
c 修改(change)
范圍可以是下列幾個:
e 光標所在位置到該字的最後一個字母
w 光標所在位置到下個字的第一個字母
b 光標所在位置到上個字的第一個字母
$ 光標所在位置到該列的最後一個字母
0 光標所在位置到該列的第一個字母
) 光標所在位置到下個句子的第一個字母
( 光標所在位置到該句子的第一個字母
} 光標所在位置到該段落的最後一個字母
{ 光標所在位置到該段落的第一個字母
說實在的,組合這些指令來編輯文件有一點點藝術(shù)氣息。不管怎麼樣,它們提供更多編輯文字的能力。值得
注意的一點是刪除與復制都會將指定范圍的內(nèi)容放到暫存區(qū)里,然後就可以用指令 p 貼到其它地方去,這
是 vi 用來處理區(qū)段拷貝與搬移的辦法。
某些 vi 版本,例如Linux所用的 elvis 可以大幅簡化這一坨指令。如果稍微觀察一下這些編輯指令
就會發(fā)現(xiàn)問題其實是定范圍的方式有點雜,實際上只有四個指令罷了。指令 v 非常好用,只要按下 v 鍵,
光標所在的位置就會反白,然後就可以移動光標來設定范圍,接著再直接下指令進行編輯即可。
對於整列操作, vi 另外提供了更方便的編輯指令。前面曾經(jīng)提到過刪除整列文字的指令 dd 就是其中一個
;cc 可以修改整列文字;而 yy 則是復制整列文字;指令 D 則可以刪除光標到該列結(jié)束為止所有的文字。
(四)、文件操作指令
文件操作指令多以 : 開頭,這跟編輯指令有點區(qū)別。
:q 結(jié)束編輯(quit)
:q! 不存檔而要放棄編輯過的文件。
:w 保存文件(write)其後可加所要存檔的檔名。
:wq 即存檔後離開。
zz 功能與 :wq 相同。
:x 與:wq相同
flw 回復于:2004-11-08 10:54:55[quote:a7be05b752="sylssgw"]對於整列操作, vi 另外提供了更方便的編輯指令。前面曾經(jīng)提到過刪除整列文字的指令 dd 就是其中一個
;cc 可以修改整列文字;而 yy 則是復制整列文字;指令 D 則可以刪除光標到該列結(jié)束為止所有的文字。[/quote:a7be05b752]
以上這一段中的每一個“列”字,懷疑應該是“行”字的誤寫。
mountainsea 回復于:2004-11-08 13:53:20thanks a lot
saintdragon 回復于:2004-11-08 14:07:36論壇有過一篇精華叫“vi從入門到精通”,樓主可以看看。
sylssgw的回答很精彩!
xzh2002 回復于:2004-11-08 17:14:39當你掌握了vi就覺得它不再是負擔,反而是最快潔的
晴天羽 回復于:2004-11-09 09:06:35VI的快節(jié)鍵很多的,要好好學個,
rengongpu 回復于:2004-11-09 10:09:26上面的朋友說的很詳細了.
rollingpig 回復于:2004-11-09 17:57:48在SCO下輸入文本怎么就這么難呢,
[code:1:7220e26ca6]點了I不知道什么時候可以輸入,根本沒有地方告訴你是不是在文本編輯狀態(tài)下還是在命令狀態(tài)下,
[/code:1:7220e26ca6]
:set showmode
[code:1:7220e26ca6]
一個小小的左右鍵都可能導致退到命令狀態(tài)下,
[/code:1:7220e26ca6]
Use h j k l instead of 左右鍵
[code:1:7220e26ca6]
想從一行的最后一個字符開始插入文字,似乎是件很難的事情,
[/code:1:7220e26ca6]
A
[code:1:7220e26ca6]
當然我是新手不知道是不是大家也曾經(jīng)有我這樣的煩惱,如果誰知道怎么回事或者如何做可以避免這種情況的出現(xiàn),請告訴我,謝謝!
[/code:1:7220e26ca6]
常上CU吧。。。。。
BTW:我的系統(tǒng)是SCO 5.0.5,默認的SHELL下的VI文本編輯。
xzh2002 回復于:2004-11-09 19:10:26樓上說的對
其實 vi真的是最快捷的編輯器,如果你覺得它不好用,那是因為你在逃避它,沒有掌握它
zhyesno 回復于:2004-11-09 19:21:59:set showmode
--------------------------------
thx...這下知道咯。。。:)
納蘭婷 回復于:2004-11-09 21:31:07VI編輯要很熟練的掌握了,對UNIX下的編輯和編程很有好處
原文轉(zhuǎn)自:http://www.ltesting.net