UNIX經常使用命令我的總結shell
1、VI編輯器經常使用操做編輯器
1)、進入輸入模式函數
vi切換到輸入模式的正規方法spa |
||
重要度3d |
指令文檔 |
功能說明字符串 |
***it |
aio |
在當前光標以後輸入table |
|
A |
在當前行之末輸入 |
*** |
i |
在當前光標以前輸入 |
|
I |
在當前行之首輸入 |
*** |
o |
在當前行之下新增一行,並在新增行輸入 |
|
O |
在當前行之上新增一行,並在新增行輸入 |
輸入結束後,按Esc鍵退出輸入模式。
2)、光標移動
vi光標移動 |
||
重要度 |
指令 |
功能說明 |
*** |
h |
向左移動一個字節 |
*** |
l |
向右移動一個字節 |
*** |
j |
向下移動一個字節 |
*** |
k |
向上移動一個字節 |
* |
b |
左移一個單詞,至詞首 |
* |
w |
右移一個單詞,至詞首 |
* |
e |
右移一個單詞,至詞尾 |
* |
:0 |
移動到文檔起始位置 |
* |
0 |
移到當前行行首 |
* |
^ |
移動到本行行首第一個可見字符 |
* |
$ |
移到當前行行尾 |
|
+ |
移至下一行的行首 |
|
- |
移至上一行的行首 |
|
H |
移至視窗的第一行 |
|
M |
移至視窗的中間一行 |
|
L |
移至視窗的最後一行 |
|
G |
移至該文件的最後一行 |
vi光標移動 |
||
重要度 |
指令 |
功能說明 |
*** |
nG |
移至該文檔的第n行 |
** |
N+ |
下移n行 |
** |
n- |
上移n行 |
** |
{ |
光標移動到上一個空行 |
** |
} |
光標移動到下一個空行 |
** |
[[ |
光標移動到下一個函數起始位置(’{‘字符所在位置) |
** |
]] |
光標移動到上一個函數起始位置(’{‘字符所在位置) |
** |
( |
光標移動到上一段落起始位置,空行也被認爲是段落(多個連續空行被認爲是一個段落) |
** |
) |
光標移動到下一段落起始位置,空行也被認爲是段落(多個連續空行被認爲是一個段落) |
以上命令從h到e,都可指定重複操做次數,如5h表示光標向前移動5個字節,10j表示向下移動10行。
3)、視窗移動
vi視窗移動 |
||
重要度 |
指令 |
功能說明 |
** |
<Ctrl> + f |
視窗下卷一頁 |
** |
<Ctrl> + b |
視窗上卷一頁 |
** |
<Ctrl> + d |
視窗下卷半頁 |
** |
<Ctrl> + u |
視窗上卷半頁 |
** |
<Ctrl> + e |
視窗下卷一行 |
** |
<Ctrl> + y |
視窗上卷一行 |
4)、刪除操做
Vi刪除操做 |
||
重要度 |
指令 |
功能說明 |
*** |
x |
刪除光標所在字節 |
*** |
X |
刪除光標前一字節 |
*** |
dw |
從光標當前位置開始向後刪除一個單詞 |
*** |
db |
從光標當前位置開始向前刪除一個單詞 |
*** |
d0 |
從行首刪除至當前光標位置 |
*** |
d$ |
從光標當前位置刪除至行尾 |
*** |
dd |
刪除光標所在行 |
*** |
D |
同d$ |
*** |
dG |
刪除從當前光標位置知道文檔末尾的全部內容。 |
以上x,X,dw,db,dd能夠指定字符/行數,如3x表示刪除從當前光標所在位置起的3個字符,3dd表示刪除從當前光標所在行開始的3行。
5)、拷貝和粘貼操做
Vi拷貝粘貼 |
||
重要度 |
指令 |
功能說明 |
** |
[n]yy |
拷貝一行或n行 |
|
p |
粘貼剛剛拷貝或者刪除(d*命令操做的內容)到當前光標後面,若是若是是單詞則粘貼到當前行,其餘內容則在當前光標所在行後面添加新行進行粘貼 |
** |
P |
粘貼剛剛拷貝或者刪除(nx或者d*命令操做的內容)到當前光標後面,若是若是是單詞則粘貼到當前行,其餘內容則在當前光標所在行後面添加新行進行粘貼 |
6)、修改操做
Vi修改操做 |
||
重要度 |
指令 |
功能說明 |
*** |
s |
修改光標所在字節,修改完成後按Esc鍵結束 |
|
S |
修改整行內容,修改完成後按Esc鍵結束 |
* |
r |
替換當前光標所在字節 |
* |
R |
進入替換狀態,直至按Esc鍵結束 |
* |
cw |
修改一個單詞(從光標位置至詞尾) |
|
cb |
修改一個單詞(從詞首至光標位置) |
* |
cc |
修改整行內容,完成後按Esc鍵結束,同S |
* |
c0 |
修改行首至光標位置的內容 |
* |
c$ |
修改光標位置至行尾的內容 |
|
~ |
光標所在字節大小寫切換 |
7)、指令重複
Vi指令重複 |
||
重要度 |
指令 |
功能說明 |
*** |
nx |
刪除n個字節 |
*** |
ndd |
刪除n行 |
*** |
ns |
修改n個字節 |
在指令模式中,可在指令前面加入一個數字n,則該指令會重複執行n次。經常使用的重複操做有:
8)、取消前一個操做
Vi取消前一個操做 |
||
重要度 |
指令 |
功能說明 |
*** |
u |
撤消上一指令的結果 |
** |
U |
撤銷本行上的全部修改 |
9)、查找字符串
Vi查找字符串 |
||
重要度 |
指令 |
功能說明 |
*** |
/字符串 |
從當前光標向後查找該字符串 |
*** |
?字符串 |
從當前光標向前查找該字符串 |
*** |
n |
從當前光標向後查找下一個字符串 |
*** |
N |
從當前光標向前查找下一個字符串 |
|
# |
向上查找當前光標所在位置的單詞,若是當前位置爲空白,則爲其後的第一個單詞 |
|
* |
向下查找當前光標所在位置的單詞,若是當前位置爲空白,則爲其後的第一個單詞 |
10)、查看編輯情況
Vi查看編輯情況 |
||
重要度 |
指令 |
功能說明 |
*** |
<Ctrl> + g |
顯示正在編輯的文件名、當前光標所在行數、文件總行數、文件是否被修改 |
11)、括號匹配
Vi括號匹配 |
||
重要度 |
指令 |
功能說明 |
* |
% |
定位到匹配的「(」、「)」、「{」、「}」 |
括號匹配符能夠用在各類指令中,如d%表示從但前光標位置刪除到匹配的「(」「)」「{」「}」的位置,c%表示替換從當前光標到配置的「(」「)」「{」「}」位置,y%表示拷貝從當前光標位置到其後匹配的「)」或「}」。
當光標不在「(」「)」「{」「}」上時,默認找其後最近的「(」,而後找「{」,如:
if ( Dflag != TMD && ( rflag != READABLE || wflag != WRITEABLE ) ) {
…
}
光標在&處,此時若執行d%則效果爲:
if ( Dflag != TMD ) {
…
}
12)、執行指令
Vi執行指令 |
||
重要度 |
指令 |
功能說明 |
*** |
:10,20d |
刪除第10行至第20行的內容 |
*** |
:10d |
刪除第10行的內容 |
*** |
:%d |
刪除所有內容 |
*** |
:10,20co30 |
將第10行至第20行的內容複製到第30行以後 |
*** |
:10,20mo30 |
將第10行至第20行的內容移動到第30行以後 |
*** |
:1,$s/old/new |
將第1行至最後一行中的old替換成new |
*** |
:1,$s/^/new |
將第1行至最後一行的內容前面插入new |
*** |
:10 |
將光標移至第10行 |
*** |
:10,20y |
拷貝第10行至第20行的內容 |
*** |
:g/old/s//new |
在全文檔範圍內查找每行第一次出現的old字符串並替換爲new字符串 |
*** |
:g/old/s//new/g |
在全文檔範圍內查找全部old字符串並替換爲new字符串 |
*** |
:g/old/d |
刪除文檔中包含old字符串的行 |
*** |
:r filename |
讀入filename文件內容,並粘貼到當前光標下一行 |
*** |
:e |
從新載入當前文檔的內容覆蓋當前全部修改,其實就是將全部自上次保存(或者打開)後的全部修改撤銷。 |
*** |
:$ |
光標移動到文檔末尾一行行首 |
*** |
:[w]n[!] [filename] |
切換到下一個文件進行編輯。若是指定了filename則打開指定的filename文件進行編輯,若是filename不存在則默認爲建立該新文件。若是沒有指定文件名,則只能在vi已經打開多個文件且當前編輯的文件不是最後一個文件時使用該命令。n表示next,w表示在切換到下一個文件前將當前文件的修改進行保存,!表示強制執行。 |
*** |
:rew[!] |
rew即rewind,從新打開第一個文件進行編輯,可是若是當前文件的修改沒有保存的話將失敗,若是使用了!,則將捨棄對當前文檔的最近修改(自上次存儲或者文件打開以來),強行打開第一個文件進行編輯。 |
*** |
:la[!] |
la即last,打開最後一個文件進行編輯,相似rew,只不過一個是打開第一個文件,一個是打開最後一個文件。 |
*** |
:help [key] |
顯示vi的幫助信息,若是指定了命令,則顯示該命令的幫助信息。用:exit或:q推出幫助界面。 |
以上用具體的數字爲例進行介紹,數字表示行數,光標所在行可用「.」代替,文件最後一行可用「$」代替。
13)、保存與退出
Vi保存與退出 |
||
重要度 |
指令 |
功能說明 |
*** |
:w |
保存,但不退出 |
*** |
:wq |
保存並退出 |
|
:x |
同:wq |
*** |
:q |
退出,若是當前文件沒有保存,禁止退出 |
*** |
:q! |
不保存退出 |
|
:w file1 |
將內容保存至文件file1中,注意:此時編輯的仍爲原文件 |
|
:w! file1 |
將內容覆蓋保存至文件file1中,如文件file1存在,:w file1將禁止執行 |
14)、環境設置
Vi環境設置 |
||
重要度 |
指令 |
功能說明 |
*** |
:set |
顯示已設置的環境情況 |
*** |
:set all |
顯示全部的環境設置選項 |
*** |
:set nu |
顯示行號 |
*** |
:set nonu |
不顯示行號 |
*** |
:set ts=n |
設置Tab鍵的長度爲n |
注:vi環境設置的缺省值可在$HOME/.exrc文件中設置。
15)、重複指令
Vi重複指令 |
||
重要度 |
指令 |
功能說明 |
*** |
. |
重複上一條指令 |
16)、切換到shell狀態
Vi切換到shell狀態 |
||
重要度 |
指令 |
功能說明 |
*** |
:sh |
切換到shell狀態,此時能夠執行全部shell命令,知道執行exit返回文檔編輯狀態。 |