標籤:http 使用 strong 檔案 os 代碼
vi編輯器的使用
關鍵詞:VI,vi編輯器,
1、關於文字編輯器
文字編輯器有很多,比形模式的gedit、kwrite、OpenOffice ... ... ,文字模式下的編輯器有vi、vim(vi的增強版本)和nano ... ... vi和vim是我們在Linux中最常用的編輯器。我們有必要介紹一下vi(vim)最簡單的用法,以讓Linux入門級使用者在最短的時間內學會使用它。
nano工具和DOS作業系統下的edit操作相似,使用簡單,我們不作介紹了,如果您有興趣,不妨嘗試一下;
2、vi 編輯器
為什麼要學會簡單應用vi?
vi或vim是Linux最基本的文本編輯工具,vi或vim雖然沒有圖形介面編輯器那樣點滑鼠的簡單操作,但vi編輯器在系統管理、伺服器管理中,永遠不是圖形介面的編輯器能比的。當您沒有安裝X-windows案頭環境或案頭環境崩潰時,我們仍需要字元模式下的編輯器vi;vi或vim 編輯器在建立和編輯簡單文檔最高效的工具;
3、vi 編輯器的使用方法
3.1 如何調用vi ;
[root@localhost ~]# vi filename
3.2 vi 的三種命令模式
Command(命令)模式,用於輸入命令;
Insert(插入)模式,用於插入文本;
Visual(可視)模式,用於視化的的高亮並選定本文;
3.3 檔案的儲存和退出
Command 模式是vi或vim的預設模式,如果我們處於其它命令模式時,要通過ESC鍵切換過來。
當我們按ESC鍵後,接著再輸入:號時,vi會在螢幕的最下方等待我們輸入命令;
:w 儲存;
:w filename 另存新檔filename;
:wq! 儲存退出;
:wq! filename 註:以filename為檔案名稱儲存後退出;
:q! 不儲存退出;
:x 應該是儲存並退出 ,功能和:wq!相同
3.4 游標移動
當我們按ESC進入Command模式後,我們可以用下面的一些鍵位來移動游標;
j 向下移動一行;
k 向上移動一行;
h 向左移動一個字元;
l 向右移動一個字元;
ctrlb 向上移動一屏;
ctrlf 向下移動一屏;
向上箭頭 向上移動;
向下箭頭 向下移動;
向左箭頭 向左移動;
向右箭頭 向右移動;
我們編輯一個檔案時,對於 j、k、l和h鍵,還能在這些動作命令的前面加上數字,比如 3j,表示向下移動3行。
3.5 插入模式(文本的插入)
i 在游標之前插入;
a 在游標之後插入;
I 在游標所在行的行首插入;
A 在游標所在行的行末插入;
o 在游標所在的行的上面插入一行;
O 在游標所在的行的下面插入一行;
s 刪除游標後的一個字元,然後進入插入模式;
S 刪除游標所在的行,然後進入插入模式;
3.6 常值內容的刪除操作
x 一個字元;
#x 刪除幾個字元,#表示數字,比如3x;
dw 刪除一個單詞;
#dw 刪除幾個單詞,#用數字表示,比如3dw表示刪除三個單詞;
dd 刪除一行;
#dd 刪除多個行,#代表數字,比如3dd 表示刪除游標行及游標的下兩行;
d$ 刪除游標到行尾的內容;
J 清除游標所處的行與上一行之間的空格,把游標行和上一行接在一起;
3.7 恢複修改及恢複刪除操作
u 撤消修改或刪除操作;
按ESC鍵返回Command(命令)模式,然後按u鍵來撤消刪除以前的刪除或修改;如果您想撤消多個以前的修改或刪除操作,請按多按幾次u。這和Word的撤消操作沒有太大的區別;
3.8 可視模式
在最新的Linux發行版本中,vi提供了可視模式,因為這個功能是vim才有的。如果您用的vi沒有這個功能,就換成vim就有了。開啟可視模式,按ESC鍵,然後按v就進入可視模式;
可視模式為我們提供了極為友好的選取文本範圍,以高亮顯示;在螢幕的最下方顯示有;
-- 可視 --
或
--VISUAL--
進入可視模式,我們就可以用前面所說的命令列模式中的游標移動指令,可以進行文本範圍的選取。
選取文本範圍有何用?
我們可以對某部份刪除作業,按d鍵就刪除了我們選中的內容。
選中內容後,我們按y就表示複製;按d表示刪除;
值得一提是的刪除的同時,也表示複製。我們返回到命令模式,然後移動游標到某個位置,然後按shiftp鍵,就把剛才刪除的內容貼上了。我們先在這裡提一句,在後文,我們還得詳細說說。
退出可視模式,還是用ESC鍵;
3.9 複製和粘帖的操作
其實刪除也帶有剪下的意思,當我們刪除文字時,可以把游標移動到某處,然後按shiftp鍵就把內容貼在原處,然後再移動游標到某處,然後再按p或shiftp又能貼上;
p 在游標之後粘帖;
shiftp 在游標之前粘帖
來舉一例:
比如我們想把一個文檔的第三行複製下來,然後帖到第五行的後面,我們應該怎麼做呢?
有兩種方法;
第一種方法:
先把第三行刪除,把游標移動到第三行處,然後用dd動作,接著再按一下shiftp鍵。這樣就把剛才刪除的第三行帖在原處了。
接著我們再用k鍵移動游標到第五行,然後再按一下p鍵,這樣就把第三行的內容又帖到第五行的後面了;
第二種方法:
進入可視模式,按ESC鍵,然後按v鍵。移動滑鼠指標,選中第三行的內容,然後按y鍵複製;再移動指標到第五行,最後按p鍵;
所以複製和粘貼操作,是命令模式、插入模式及可視模式的綜合運用;我們要學會各種模式之間的切換,要常用ESC鍵;更為重要的學會在命令模式下移動游標;
3.10 關於行號
有時我們配置一個程式運行時,會出現設定檔X行出現錯誤 。這時我們要用到行號相關的操作;
為所有內容添加行號;
按ESC鍵,然後輸入:
:set number
游標所處位置
在螢幕的右下角,有類似如下的;
57,8 27%
在這之中,57表示第57行,8表示第8個字元;
3.11 尋找和替換功能
3.11.1 尋找
首先,我們要進入ESC鍵,進入命令模式;我們輸入/或?就進入尋找模式了;
/SEARCH 註:正向尋找,按n鍵把游標移動到下一個合格地方;
?SEARCH 註:反向尋找,按shiftn 鍵,把游標移動到下一個合格
舉一例:比如我想在一個檔案中找到swap單詞,我應該如下做;
首先按ESC鍵,進入命令模式,然後輸入;
/swap
或
?swap
3.11.2 替換
按ESC鍵進入命令模式;
:s /SEARCH/REPLACE/g 註:把當前游標所處的行中的SEARCH單詞,替換成REPLACE,並把所有SEARCH高亮顯示;
:%s /SEARCH/REPLACE 註:把文檔中所有SEARCH替換成REPLACE;
:#,# s /SEARCH/REPLACE/g 註:#號表示數字,表示從多少行到多少行,把SEARCH替換成REPLACE;
註:在這之中,g表示全域尋找;我們注意到,就是沒有替換的地方,也會把SEARCH高亮顯示;
舉例說明:
比如我們有一篇文檔要修改;
我們把游標所在的行,把所有單詞the,替換成THE,應該是:
:s /the/THE/g
我們把整篇文檔的所有的the都替換成THE,應該是:
:%s /the/THE
我們僅僅是把第1行到第10行中的the,替換成THE,應該是;
:1,10 s /the/THE/g
1.1.1 編輯器vi
在Linux下開發一般都用vi編輯器來編寫代碼,就像Windows下用記事本寫文擋一樣編寫各種文檔,只是寫的代碼檔案尾碼名是.c或.cpp等;在以後的工作中,我們每天的程式編寫、檔案編輯等工作都得用到vi編輯器,所以對vi運用的熟練程度直接決定了你的工作效率。
網上有關vi使用方法的資料有很多,你可以自己下載回來學習或直接學習Linux內建的協助手冊。不管你通過何種方式學習,下面的幾點是你必須要掌握並熟練運用的:
一、 Vi的三種工作模式的區別以及相互間的切換
Vi的工作模式為:
1. 編輯模式
Vi 在初始啟動(開啟檔案)後首先進入編輯模式,在此模式下可移動游標、刪除文字、複製或粘貼文字等操作;
Vi文法:vi <檔案名稱>;
2. 插入模式
當使用者在編輯模式下鍵入 i, a, o 等命令之後進入插入模式,除 Esc 之外的任何字元均將被看成是插入到編輯緩衝區中的字元,按Esc後切換到編輯模式;
3. 最後行模式
當使用者在編輯模式下鍵入“:”之後進入最後行模式,在此模式下可鍵入命令用來儲存檔案、讀取檔案內容、執行 Shell 命令、設定 Vi 參數、以Regex的方式尋找字串或替換字串等;
二、 編輯模式命令操作
1. 移動游標
要對本文內容進行修改,首先必須把游標移動到指定位置:
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,左移游標,到本行的開頭
$ 右移游標,到本行的末尾
^ 移動游標,到本行的第一個非Null 字元
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,將緩衝區的內容粘貼到游標的前面
yy 複製當前行到記憶體緩衝區
nyy 複製 n 行內容到記憶體緩衝區
5yy 複製 5 行內容到記憶體緩衝區
4. 搜尋字串
要尋找檔案中指定字或短語出現的位置,可以 用 vi 直接進行搜尋,而不必以手工方式進行。搜尋方法是:鍵入字元 / ,後面跟以要搜尋的字串,然後 按斷行符號鍵。編輯程式執行正向搜尋(即朝檔案末尾方向),並在找到指定字串後,將游標停到該字串的 開頭;鍵入 n 命令可以繼續執行搜尋,找出這一字串下次出現的位置。用字元 ? 取代 / ,可以實現反向 搜尋(朝檔案開頭方向)
5. 撤銷和重複
在編輯文檔的過程中,為消除某個錯誤的編輯命令造成的後果,可以用撤消命令。另外,如果使用者希望在新 的游標位置重複前面執行過的編輯命令,可用重複命令:
u 撤消前一條命令的結果
. 重複最後一條修改本文的命令
6. 文本選中
vi 可進入到一種成為 Visual 的模式,在該模式下,使用者可以用游標移動命令可視地選擇文本,然後再執行其他編輯操作,例如刪除、複製等:
v 字元選中命令
V 行選中命令
三、 插入模式命令操作
在編輯模式下正確定位游標之後,可用以下命令切換到插入模式:
i 在游標左側輸入本文
a 在游標右側輸入本文
o 在游標所在行的下一行增添新行
O 在游標所在行的上一行增添新行
I 在游標所在行的開頭輸入本文
A 在游標所在行的末尾輸入本文
上面介紹了幾種切換到插入模式的簡單方法。另外還有一些命令,它們允許在進入插入模式之前首先刪去一段本文,從而實現本文的替換。這些命令包括:
s 用輸入的本文替換游標所指向的字元
ns 用輸入的本文替換游標右側n個字元
cw 用輸入的本文替換游標右側的字
ncw 用輸入的本文替換游標右側的 n 個字
cb 用輸入的本文替換游標左側的字
ncb 用輸入的本文替換游標左側的 n 個字
cd 用輸入的本文替換游標的所在行
ncd 用輸入的本文替換游標下面的 n 行
c$ 用輸入的本文替換從游標開始到本行末尾的所有字元
c0 用輸入的本文替換從本行開頭到游標的所有字元
四、 最後行模式命令操作
編輯模式下鍵入“:”,游標就跳到螢幕最後一行,並在那裡顯示冒號,使用者輸入的內容均顯示在螢幕的最後一行,按斷行符號鍵,vi 執行命令;
1. 退出命令
ZZ 在編輯模式下可以退出 vi 編輯程式,該命令儲存對本文所作的修改,覆蓋原始檔案;
:q 在未作修改的情況下退出
:q! 放棄所有修改,退出編輯程式
:wq 將編輯的內容寫入原始檔案並退出編輯程式(相當於 ZZ 命令)
2. 行號與檔案
命令模式下,可以規定命令操作的行號範圍。數值用來指定絕對行號;字元“.”表示游標所在行的行號;字元 符“$”表示本文最後一行的行號;簡單的運算式,例如“.+5”表示當前行往下的第 5 行;
編輯中的每一行本文都有自己的行號,用下列命令可以移動游標到指定行:
:n 將游標移到第 n 行
:w 將編輯的內容寫入原始檔案,用來儲存編輯的中間結果
:w file 將編輯的內容寫入 file 檔案,保持原有檔案的內容不變
:a,bw file 將第 a 行至第 b 行的內容寫入 file 檔案
:r file 讀取 file 檔案的內容,插入當前游標所在行的後面
:e file 編輯新檔案 file 代替原有內容
:f file 將當前檔案重新命名為 file
:f 列印當前檔案名稱和狀態,如檔案的行數、游標所在的行號等
: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 命令
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 放在命令開頭,表示對本文中所有包含搜尋字串的行進行替換操作。
五、 Shell切換
在編輯本文時,利用 vi 命令模式下提供的 shell 切換命令,無須退出 vi 即可執行 Linux 命令,十分方便,也可以說是最後行模式。文法格式為:
:! command 執行完 shell 命令 command 後回到 vi
另外,在編輯模式下,鍵入 K ,可命令 vi 尋找游標所在單詞的手冊頁,相當於運行 man命令。