linux 中vi命令

正文:

進入vi後 有兩種模式
1.編輯模式
2.命令模式

進入vi後默認是命令模式,所以不要亂按 就會得到dd的警告聲,要輸入文字的話請按a後i 就可以開始輸入文字拉!
輸入結束後 請按esc鍵回命令模式
輸入q就是退出
輸入wq就是存盤後退出
輸入q!放棄存盤強行退出

.
Vi 的使用

Vi 已經是 Unix 系統中標準的文字編輯器, 每個網管人員都必須熟悉它, 因爲你會在維護系統時常常遇到它.
Vi 對初學者而言, 第一印象總是不好, 覺得它難用. 其實, 大家在用慣了辦公室軟件之後, 再回過頭來用這些未見過的怪物, 難免無法適應, 這是很正常的. 但別忘了, 各位都將是學校中重要網管的人員,您的角色不再是純粹的使用者, 而是一位面對複雜網絡的管理者及問題解決者, 你必須能夠親手操控你的系統, 設定你的系統, 調整你的系統, 而這個過程, 你就不得不去面對 Vi.
不要拿 Word 的使用習慣來挑剔 Vi, 它們的作用方向不同, 風格也不同, 一旦您能上手, 也許你會喜歡上它. Vi 是網絡管理人員的標準左右手.
So, 打開你的心, 接受會比反彈更有收穫.
二. 開啓檔案, 關閉檔案
vi 檔名 開啓檔案
: 進入命令列的方法
q 離開 (命令列)
wq 存盤然後離開 (命令列)
q! 放棄存盤, 強迫離開 (命令列)
ZZ 存盤然後離開 (不在命令列使用)
:e 檔名 在 Vi 中開啓檔案
三. Vi 的操作模式:
Vi 有二種主要的操作模式, ESC 鍵爲單向的切換鍵(由本文輸入模式回到編輯命令模式)
編輯命令模式 : 要 vi 做一些特定目的的動作. 如插入,附加,取代,修改,刪除,移動光標,搜尋等等. 若是存盤等動作, 則需在命令列中下達, 欲切換至命令列, 需先按 :
本文輸入模式 : 在此模式下, 任何字符, 皆被視爲輸入的數據.
一開始進入 Vi 之後, 即進入編輯命令模式, 你輸入的每一個字符, 皆被預視爲一個指令. 有效的指令會被接受, 若是無效的指令, 會產生 beep beep 聲, 以示警告.
若想做輸入的動作, 必須切換爲本文輸入模式, 切換的方法, 只要單按一個特殊意義的字符鍵即可, 如下所示:
按 i 或 I 插入狀態
按 a 或 A 附加狀態
按 R 取代狀態R 會進行連續字符取代
按 s 或 S 刪除一個字符;刪除光標所在那一列
按 cw, c2b, c$, c0 修改狀態
按 o 或 O 新增空白列
你不必一下子全用上, 只要會 i, a, o 這個三個模式即可勝任愉快, 因爲大部份時候, 你也只用這三個.
OK, 現在你可以試着在本文輸入模式下, 鍵入一些資料看看. 然後, 按 ESC 切換回編輯命令模式.
四. 移動光標:
Vi 爲了適用於各種不同的終端機模式, 因此以字鍵的方式來操控光標.
k j h l 上 下 左 右
Enter 換列
w b 往前一個 word ; 倒退一個 word
0 $ 至該列開頭 ; 至該列尾端
+ - 往下一列; 往上一列
請記住一個要訣:
在 Vi 中, 大部份的命令都可以在其前面加上數字, 該數字表示重複該命令的次數.
例如: 8l 表示往右移動 8 個字符, 3w 表示往前移動三個 word, 2b 表示倒退 2 個 word
注: word 的定義, 連續英數字元形成一個 word, 而其它特殊符號則每一個字符便是一個 word(除非連續特殊字符), 例如: --classify 中含有 2 個 word, 一個是 -- ; 一個是 classify
而 -x, 則有 3 個 word.
在特殊的終端機模式下, 方向鍵也是可以使用的. 如 linux 或 vt100.
其實大部份時候, 你仍可以保有使用方向鍵的習慣. 但大概只有 local 下才能使用 PgUp , PgDn, End, Home 等鍵喔!
不過, 若你所使用的終端機模式不支持方向鍵, 那麼上表中的按鍵, 就相當重要了.
五. 卷頁:
^f 往下一頁 (forward)
^b 往上一頁 (before)
^d 往下半個屏幕(down)
^u 往上半個屏幕(up)
六. 跳列:
你可以指定跳至某一列位置. 跳動之前, 先查看一下目前所在列數是多少.
^g 可以顯示目前的位置, 如: "ls.txt" line 53 of 264 --20%-- col 16-23
上面表示, 目前是在第 53 列, 全部共有 264 列, 佔該檔百分之20的位置, 目前的光標, 實際是在第23行, 但只算成第16行, 因爲中間有使用 tab 鍵.
80G 或 80gg 跳至第 80 列
G 跳至文件尾
gg 跳至文件頭
七. 刪除: (但不會進入本文輸入模式)
x 刪除一個字符
dd 刪除一行
r 取代一個字符
以上皆針對光標目前的所在位置產生作用.
還有 dw, db, de, d0, d$ 等命令, 但你不須一下子全用上. 上表中這三個夠用了.
記住一個要訣: Vi 的命令繁多, 但你真正用上手的不必多, 而且這些也就夠了.
八. undo (回覆動作):
若你對上一個動作反悔了, 可以使用 undo 的功能:
u 取消上一個動作所產生的改變
U 取消光標所在那一列所有的改變
:e! 取消所有的改變, 回覆至未修改之前
九. 關鍵詞搜尋/取代:
/ 關鍵詞 往下搜尋關鍵詞
? 關鍵詞 往上搜尋關鍵詞
n 重複搜尋命令(不管往下或往上)
N 和 n 相反方向
cw字符串 以該字符串取代原有的關鍵詞
n. 繼續取代該字符串的動作
%s/目標/取代/g 將目標字符串全換成取代字符串
十. 選取、複製與搬移:
Y 或 yy 選取光標所在那一列
5Y 或 5yy 選取光標列所在共5列(5 只是一個例子, 可改用其它數字)
p 將選取的內容, 複製至光標之後
P 將選取的內容, 複製至光標之前
cw, x, dd 等刪除命令 會將被刪除的內容放入 buffer 中, 配合 p 或 P 即可做出搬移的效果.
十一. 暫時跳出 Vi:
在編輯過程中, 你可能想要執行其它命令, 方法如下:
:! 命令 執行該令命
:sh 暫時跳出 Vi, 欲回 Vi 按 ^d 或 exit

vi 的工作模式

編輯模式

插入模式

命令模式

shell 切換

選項設置

vim 和 gvim 的高級特色

1.6.1 vi 的工作模式
Vi 在初始啓動後首先進入編輯模式,這時用戶可以利用一些預先定義的按鍵來移動光標、刪除文字、複製或粘貼文字等。這些按鍵均是普通的字符,例如 l 是向右移動光標,相當於向右箭頭鍵,k 是向下移動光標,相當於向下箭頭鍵。在編輯模式下,用戶還可以利用一些特殊按鍵選定文字,然後再進行刪除、或複製等操作。

當用戶在編輯模式下鍵入 i, a, o 等命令之後,可進入插入模式;鍵入 : 可進入命名模式。在插入模式下,用戶隨後輸入的,除 Esc 之外的任何字符均將被看成是插入到編輯緩衝區中的字符。按 Esc 之後,從插入模式切換到編輯模式。

在命令模式,Vi 將把光標挪到屏幕的最下方,並在第一個字符的位置顯示一個 :(冒號)。這時,用戶就可以鍵入一些命令。這些命令可用來保存文件、讀取文件內容、執行 Shell 命令、設置 Vi 參數、以正則表達式的方式查找字符串或替換字符串等。

1.6.2 編輯模式
1. 移動光標
要對正文內容進行修改,首先必須把光標移動到指定位置。移動光標的最簡單的方式是按鍵盤的上、下、左、
右箭頭鍵。除了這種最原始的方法之外,用戶還可以利用 vi 提供的衆多字符組合鍵,在正文中移動光標,迅
速到達指定的行或列,實現定位。例如:
k、j、h、l 功能分別等同於上、下、左、右箭頭鍵
Ctrl+b 在文件中向上移動一頁(相當於 PageUp 鍵)
Ctrl+f 在文件中向下移動一頁(相當於 PageDown 鍵)
H 將光標移到屏幕的最上行(Highest)
nH 將光標移到屏幕的第 n 行
2H 將光標移到屏幕的第 2 行
M 將光標移到屏幕的中間(Middle)
L 將光標移到屏幕的最下行(Lowest)
nL 將光標移到屏幕的倒數第 n 行
3L 將光標移到屏幕的倒數第 3 行
w 在指定行內右移光標,到下一個字的開頭
e 在指定行內右移光標,到一個字的末尾
b 在指定行內左移光標,到前一個字的開頭
0 數字0,左移光標,到本行的開頭
$ 右移光標,到本行的末尾
^ 移動光標,到本行的第一個非空字符

光標移動指令:

指令 說明 功能鍵
0 移動到光標所在列的最前面 [Home]
$ 移動到光標所在列的最後面 [End]
[CTRL][d] 向下半頁 [PageDown]
[CTRL][f] 向下一頁
[CTRL] 向上半頁
[CTRL] 向上一頁 [PageUp]
H 移動到視窗的第一列
M 移動到視窗的中間列
L 移動到視窗的最後列
b 移動到下個字的第一個字母
w 移動到上個字的第一個字母 
e 移動到下個字的最後一個字母
^ 移動到光標所在列的第一個非空白字元
n- 減號移動到上一列的第一個非空白字元
前面加上數字可以指定移動到以上 n 列
n+ 加號移動到下一列的第一個非空白字元
前面加上數字可以指定移動到以下 n 列
nG 直接用數字 n 加上大寫 G 移動到第 n 列


2. 替換和刪除
將光標定位於文件內指定位置後,可以用其他字符來替換光標所指向的字符,或從當前光標位置刪除一個或多
個字符。例如:
rc 用 c 替換光標所指向的當前字符
nrc 用 c 替換光標所指向的前 n 個字符
5rc 用 c 替換光標所指向的前 5 個字符
x 刪除光標所指向的當前字符
nx 刪除光標所指向的前 n 個字符
3x 刪除光標所指向的前 3 個字符
dw 刪除光標右側的字
ndw 刪除光標右側的 n 個字
3dw 刪除光標右側的 3 個字
db 刪除光標左側的字
ndb 刪除光標左側的 n 個字
5db 刪除光標左側的 5 個字
dd 刪除光標所在行,並去除空隙
ndd 刪除 n 行內容,並去除空隙
3dd 刪除 3 行內容,並去除空隙

3. 粘貼和複製
從正文中刪除的內容(如字符、字或行)並沒有真正丟失,而是被剪切並複製到了一個內存緩衝區中。用戶可
將其粘貼到正文中的指定位置。完成這一操作的命令是:
p 小寫字母 p,將緩衝區的內容粘貼到光標的後面
P 大寫字母 P,將緩衝區的內容粘貼到光標的前面
如果緩衝區的內容是字符或字,直接粘貼在光標的前面或後面;如果緩衝區的內容爲整行正文,則粘貼在當前
光標所在行的上一行或下一行。
注意上述兩個命令中字母的大小寫。vi 編輯器經常以一對大、小寫字母(如 p 和 P)來提供一對相似的功能
。通常,小寫命令在光標的後面進行操作,大寫命令在光標的前面進行操作。
有時需要複製一段正文到新位置,同時保留原有位置的內容。這種情況下,首先應當把指定內容複製(而不是
剪切)到內存緩衝區。完成這一操作的命令是:
yy 複製當前行到內存緩衝區
nyy 複製 n 行內容到內存緩衝區
5yy 複製 5 行內容到內存緩衝區

4. 搜索字符串
和許多先進的編輯器一樣,vi 提供了強大的字符串搜索功能。要查找文件中指定字或短語出現的位置,可以
用 vi 直接進行搜索,而不必以手工方式進行。搜索方法是:鍵入字符 / ,後面跟以要搜索的字符串,然後
按回車鍵。編輯程序執行正向搜索(即朝文件末尾方向),並在找到指定字符串後,將光標停到該字符串的
開頭;鍵入 n 命令可以繼續執行搜索,找出這一字符串下次出現的位置。用字符 ? 取代 / ,可以實現反向
搜索(朝文件開頭方向)。例如:
/str1 正向搜索字符串 str1
n 繼續搜索,找出 str1 字符串下次出現的位置
?str2 反向搜索字符串 str2
無論搜索方向如何,當到達文件末尾或開頭時,搜索工作會循環到文件的另一端並繼續執行。

5. 撤銷和重複
在編輯文檔的過程中,爲消除某個錯誤的編輯命令造成的後果,可以用撤消命令。另外,如果用戶希望在新
的光標位置重複前面執行過的編輯命令,可用重複命令。
u 撤消前一條命令的結果
. 重複最後一條修改正文的命令

6. 文本選中
vi 可進入到一種成爲 Visual 的模式,在該模式下,用戶可以用光標移動命令可視地選擇文本,然後再執行其他編輯操作,例如刪除、複製等。 v 字符選中命令 V 行選中命令


#DEMO#

1.6.3 插入模式
1. 進入插入模式
在編輯模式下正確定位光標之後,可用以下命令切換到插入模式:
i 在光標左側輸入正文
a 在光標右側輸入正文
o 在光標所在行的下一行增添新行
O 在光標所在行的上一行增添新行
I 在光標所在行的開頭輸入正文
A 在光標所在行的末尾輸入正文
上面介紹了幾種切換到插入模式的簡單方法。另外還有一些命令,它們允許在進入插入模式之前首先刪去一段
正文,從而實現正文的替換。這些命令包括:
s 用輸入的正文替換光標所指向的字符
ns 用輸入的正文替換光標右側 n 個字符
cw 用輸入的正文替換光標右側的字
ncw 用輸入的正文替換光標右側的 n 個字
cb 用輸入的正文替換光標左側的字
ncb 用輸入的正文替換光標左側的 n 個字
cd 用輸入的正文替換光標的所在行
ncd 用輸入的正文替換光標下面的 n 行
c$ 用輸入的正文替換從光標開始到本行末尾的所有字符
c0 用輸入的正文替換從本行開頭到光標的所有字符

2. 退出插入模式
退出插入模式的方法是,按 ESC 鍵或組合鍵Ctrl+[ 。

#DEMO#

1.6.4 命令模式
在 vi 的命令模式下,可以使用複雜的命令。在編輯模式下鍵入“:”,光標就跳到屏幕最後一行,並在那裏顯示冒號,此時已進入命令模式。命令模式又稱“末行模式”,用戶輸入的內容均顯示在屏幕的最後一行,按回車鍵,vi 執行命令。

1. 退出命令
在編輯模式下可以用 ZZ 命令退出 vi 編輯程序,該命令保存對正文所作的修改,覆蓋原始文件。如果只需要
退出編輯程序,而不打算保存編輯的內容,可用下面的命令:
: q 在未作修改的情況下退出
: q! 放棄所有修改,退出編輯程序

2. 行號與文件
編輯中的每一行正文都有自己的行號,用下列命令可以移動光標到指定行:
: n 將光標移到第 n 行
命令模式下,可以規定命令操作的行號範圍。數值用來指定絕對行號;字符“.”表示光標所在行的行號;字符
符“$”表示正文最後一行的行號;簡單的表達式,例如“.+5”表示當前行往下的第 5 行。例如:
:345 將光標移到第 345 行
:345w file 將第 345 行寫入 file 文件
:3,5w file 將第 3 行至第 5 行寫入 file 文件
:1,.w file 將第 1 行至當前行寫入 file 文件
:.,$w file 將當前行至最後一行寫入 file 文件
:.,.+5w file 從當前行開始將 6 行內容寫入 file 文件
:1,$w file 將所有內容寫入 file 文件,相當於 :w file 命令
在命令模式下,允許從文件中讀取正文,或將正文寫入文件。例如:
:w 將編輯的內容寫入原始文件,用來保存編輯的中間結果
:wq 將編輯的內容寫入原始文件並退出編輯程序(相當於 ZZ 命令)
:w file 將編輯的內容寫入 file 文件,保持原有文件的內容不變
:a,bw file 將第 a 行至第 b 行的內容寫入 file 文件
:r file 讀取 file 文件的內容,插入當前光標所在行的後面
:e file 編輯新文件 file 代替原有內容
:f file 將當前文件重命名爲 file
:f 打印當前文件名稱和狀態,如文件的行數、光標所在的行號等

3. 字符串搜索
給出一個字符串,可以通過搜索該字符串到達指定行。如果希望進行正向搜索,將待搜索的字符串置於兩個“
/”之間;如果希望反向搜索,則將字符串放在兩個“?”之間。例如:
:/str/ 正向搜索,將光標移到下一個包含字符串 str 的行
:?str? 反向搜索,將光標移到上一個包含字符串 str 的行
:/str/w file 正向搜索,並將第一個包含字符串 str 的行寫入 file 文件
:/str1/,/str2/w file 正向搜索,並將包含字符串 str1 的行至包含字符串 str2 的行寫
入 file 文件

4. 正文替換
利用 :s 命令可以實現字符串的替換。具體的用法包括:
:s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串 str1
:s/str1/str2/g 用字符串 str2 替換行中所有出現的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾所有出現的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現的字符串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾,表示對搜索字符串的每次出現進行替換;不加 g,表示只對搜索
字符串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。

5. 刪除正文
在命令模式下,同樣可以刪除正文中的內容。例如:
:d 刪除光標所在行
:3d 刪除 3 行
:.,$d 刪除當前行至正文的末尾
:/str1/,/str2/d 刪除從字符串 str1 到 str2 的所有行

6. 恢復文件
vi 在編輯某個文件時,會另外生成一個臨時文件,這個文件的名稱通常以 . 開頭,並以 .swp 結尾。vi 在
正常退出時,該文件被刪除,若意外退出,而沒有保存文件的最新修改內容,則可以使用恢復命令:
:recover 恢復文件
也可以在啓動 vi 時利用 -r 選項。

#DEMO#

#DEMO#

1.6.5 選項設置
爲控制不同的編輯功能,vi 提供了很多內部選項。利用 :set 命令可以設置選項。基本語法爲:
:set option 設置選項 option
常見的功能選項包括:
autoindent 設置該選項,則正文自動縮進
ignorecase 設置該選項,則忽略規則表達式中大小寫字母的區別
number 設置該選項,則顯示正文行號
ruler 設置該選項,則在屏幕底部顯示光標所在行、列的位置
tabstop 設置按 Tab 鍵跳過的空格數。例如 :set tabstop=n,n 默認值爲 8
mk 將選項保存在當前目錄的 .exrc 文件中

#DEMO#

1.6.6 shell 切換
在編輯正文時,利用 vi 命令模式下提供的 shell 切換命令,無須退出 vi 即可執行 Linux 命令,十分
方便。語法格式爲:
:! command 執行完 shell 命令 command 後回到 vi
另外,在編輯模式下,鍵入 K ,可命令 vi 查找光標所在單詞的手冊頁,相當於運行 man命令。
#DEMO#

1.6.7 vim 和 gvim 的高級特色
Vim 代表 Vi IMproved,如同其名稱所暗示的那樣,Vim 作爲標準 UNIX 系統 vi 編輯器的提高版而存在。 Vim 除提供和 vi 編輯器一樣強大的功能外,還提供有多級恢復、命令行歷史以及命令及文件名補全等功能。

gvim 是 vi 的 X Window 版本,該版本支持鼠標選中,一些高級光標移動功能,並且帶有菜單和工具按鈕。

#DEMO#
交換兩個字符位置
xp
上下兩行調換
ddp
把文件內容反轉
:g/^/m0/

最後
合併上下兩行
J

===============================

新的征程,重操舊業,linux又回來了!!!!!!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章