vi指令 vim指令

來源:互聯網
上載者:User

c編譯流程

第一步 用vi編寫  .c代碼檔案

第二步 gcc -g .c  -o  .debug

第三步 gdb

第四步  file .debug

list

開始調試

或者直接gcc .c會產生一個a.out的可執行檔


./a.out  即可

 

進入vi的命令 (關於tab縮排和vim配置可參考本博其他文章)


vi filename :開啟或建立檔案,並將游標置於第一行首
vi +n filename :開啟檔案,並將游標置於第n行首
vi + filename :開啟檔案,並將游標置於最後一行首
vi +/pattern filename:開啟檔案,並將游標置於第一個與pattern匹配的串處
vi -r filename :在上次正用vi編輯時發生系統崩潰,恢複filename
vi filename....filename :開啟多個檔案,依次進行編輯

移動游標類命令
h :游標左移一個字元
l :游標右移一個字元

space:游標右移一個字元
Backspace:游標左移一個字元
k或Ctrl+p:游標上移一行
j或Ctrl+n :游標下移一行

Enter :游標下移一行
w或W :游標右移一個字至字首
b或B :游標左移一個字至字首
e或E :游標右移一個字至字尾
) :游標移至句尾
( :游標移至句首
}:游標移至段落開頭
{:游標移至段落結尾
nG:游標移至第n行首 等價於:n
n+:游標下移n行
n-:游標上移n行
n$:游標移至第n行尾
H :游標移至螢幕頂行
M :游標移至螢幕中間行
L :游標移至螢幕最後行
0:(注意是數字零)游標移至當前行首
$:游標移至當前行尾 



螢幕翻滾類命令
Ctrl+u:向檔案首翻半屏
Ctrl+d:向檔案尾翻半屏
Ctrl+f:向檔案尾翻一屏
Ctrl+b;向檔案首翻一屏

nz:將第n行滾至螢幕頂部,不指定n時將當前行滾至螢幕頂部。

插入文本類命令
i :在游標前
I :在當前行首
a:游標後
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字元

R:替換當前字元及其後的字元,直至按ESC鍵
s:從當前游標位置處開始,以輸入的文本替代指定數目的字元
S:刪除指定數目的行,並以所輸入文本代替之
ncw或nCW:修改指定數目的字
nCC:修改指定數目的行

刪除命令
ndw或ndW:刪除游標處開始及其後的n-1個字 

dd  刪除當前行
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其後n-1行
x或X:刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u:刪除輸入方式下所輸入的文本

搜尋及替換命令
/pattern:從游標開始處向檔案尾搜尋pattern
?pattern:從游標開始處向檔案首搜尋pattern
n:在同一方向重複上一次搜尋命令
N:在反方向上重複上一次搜尋命令

:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將檔案中所有p1均用p2替換

選項設定
all:列出所有選項設定情況
term:設定終端類型
ignorance:在搜尋中忽略大小寫
list:顯示製表位(Ctrl+I)和行尾標誌($)
set nu:顯示行號
report:顯示由面向行的命令修改過的數目
terse:顯示簡短的警告資訊
warn:在轉到別的檔案時若沒儲存當前檔案則顯示NO write資訊
nomagic:允許在搜尋模式中,使用前面不帶“/”的特殊字元
nowrapscan:禁止vi在搜尋到達檔案兩端時,又從另一端開始
mesg:允許vi顯示其他使用者用write寫到自己終端上的資訊

最後行方式命令
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:w :儲存當前檔案
:e filename:開啟檔案filename進行編輯
:x:儲存當前檔案並退出
:q:退出vi
:q!:不儲存檔案並退出vi 

:wq儲存並退出
:!command:執行shell命令command
:n1,n2 w!command:將檔案中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個檔案內容作為command的輸入
:r!command:將命令command的輸出結果放到當前行

寄存器操作
"?nyy:將當前行及其下n行的內容儲存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw:將當前行及其下n個字儲存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl:將當前行及其下n個字元儲存到寄存器?中,其中?為一個字母,n為一個數字
"?p:取出寄存器?中的內容並將其放到游標位置處。這裡?可以是一個字母,也可以是一個數字
ndd:將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中



linux下vim命令詳解

進階一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的:


:qx     開始記錄宏,並將結果存入寄存器x

q     退出記錄模式

@x     播放記錄在x寄存器中的宏命令

稍微解釋一下,當在normal模式下輸入:qx後,你對文本的所有編輯動作將會被記錄下來,再次輸入q即退出了記錄模

式,然後輸入@x對剛才記錄下來的命令進行重複,此命令後可跟數字,表示要重複多少次,比如@x20,可以重複20次。這個在文本的批處理中是非常有用的。

同時編輯多個檔案

在vim眾多的外掛程式中,有一個叫minibuffer的外掛程式,就是下面所說的標籤頁功能了,可以支援同時編輯多個檔案。

標籤命令


:tabe fn     在一個新的標籤頁中編輯檔案fn

gt     切換到下一個標籤頁

gT     切換到上一個標籤頁

:tabr     切換到第一個標籤頁

:tabl     切換到最後一個標籤頁

:tabm [N]     把當前tab移動到第N個tab之後

對,正如你所想象的那樣,跟eclipse, ue等的標籤頁是一個意思!

視窗命令

ctrl+w s     水平分割視窗

ctrl+w w     切換視窗

ctrl+w q     退出當前視窗(由於同時有多個檔案,此命令不會影響其他視窗)

ctrl+w v     垂直分割視窗

其他

vim在儲存之前不會對檔案做實際的修改,只是載入到緩衝區中,對檔案的編輯其實是對緩衝區的編輯,直到:w時才會存入物理檔案。


:e file     把file載入到新的緩衝區中

:bn     跳轉到下一個緩衝區

:bd     刪除緩衝區(關閉檔案)

:sp fn     分割視窗,並將fn載入到新的視窗中

退出編輯器


:w     將緩衝區寫入檔案,即儲存修改

:wq     儲存修改並退出

:x     儲存修改並退出

:q     退出,如果對緩衝區進行過修改,則會提示

:q!     強制退出,放棄修改

尋找替換

/pattern     向後搜尋字串pattern

?pattern     向前搜尋字串pattern

n     下一個匹配(如果是/搜尋,則是向下的下一個,?搜尋則是向上的下一個)

N     上一個匹配(同上)

:%s/old/new/g     搜尋整個檔案,將所有的old替換為new

:%s/old/new/gc     搜尋整個檔案,將所有的old替換為new,每次都要你確認是否替換

複製粘貼

dd     刪除游標所在行

dw     刪除一個字(word)

x     刪除當前字元

X     刪除前一個字元

D     刪除到行末

yy     複製一行,此命令前可跟數字,標識複製多行,如6yy,表示從當前行開始複製6行

yw     複製一個字

y$     複製到行末

p     粘貼粘貼板的內容到當前行的下面

P     粘貼粘貼板的內容到當前行的上面

]p     有縮排的粘貼,vim會自動調節代碼的縮排

"a     將內容放入/存入a寄存器,可以支援多粘貼板

附:比如常用的一個寄存器就是系統寄存器,名稱為+,所以從系統粘貼板粘貼到vim中的命令為"+p,注意此處的+不表示操作符,二十一個寄存器。

移動游標

在vim中移動游標跟其他的編輯器中有很大的區別,不過一旦學會了,就會飛速的在文本中移動了。


h,j,k,l     上,下,左,右

ctrl-f     上翻一頁

ctrl-b     下翻一頁

%     跳到與當前括弧匹配的括弧處,如當前在{,則跳轉到與之匹配的}處

w     跳到下一個字首,按標點或單詞分割

W     跳到下一個字首,長跳,如end-of-line被認為是一個字

e     跳到下一個字尾

E     跳到下一個字尾,長跳

b     跳到上一個字

B     跳到上一個字,長跳

0     跳至行首,不管有無縮排,就是跳到第0個字元

^     跳至行首的第一個字元

$     跳至行尾

gg     跳至檔案的第一行

gd     跳至當前游標所在的變數的聲明處

[N]G     跳到第N行,如0G,就等價於gg,100G就是第100行

fx     在當前行中找x字元,找到了就跳轉至

;     重複上一個f命令,而不用重複的輸入fx

tx     與fx類似,但是只是跳轉到x的前一個字元處

Fx     跟fx的方向相反

),(     跳轉到上/下一個語句

*     尋找游標所在處的單詞,向下尋找

#     尋找游標所在處的單詞,向上尋找

`.     跳轉至上次編輯位置

在螢幕上移動


H     移動游標到當前螢幕上最上邊的一行

M     移動游標到當前螢幕上中間的一行

L     移動游標到當前螢幕上最下邊的一行

書籤

ma     把當前位置存成標籤a

`a     跳轉到標籤a處

編輯

r     替換一個字元

J     將下一行和當前行串連為一行

cc     刪除當前行並進入編輯模式

cw     刪除當前字,並進入編輯模式

c$     擦除從當前位置至行末的內容,並進入編輯模式

s     刪除當前字元並進入編輯模式

S     刪除游標所在行並進入編輯模式

xp     交換當前字元和下一個字元

u     撤銷

ctrl+r     重做

.     重複上一個編輯命令

~     切換大小寫,當前字元

g~iw     切換當前字的大小寫

gUiw     將當前字變成大寫

guiw     將當前字變成小寫

>>     將當前行右移一個單位

<<     將當前行左移一個單位(一個tab符)

==     自動縮排當前行


插入模式

i     從當前游標處進入插入模式

I     進入插入模式,共置游標於行首

a     追加模式,置游標於當前游標之後

A     追加模式,置游標於行末

o     在當前行之下新加一行,並進入插入模式

O     在當前行之上新加一行,並進入插入模式

Esc     退出插入模式

可視模式

標記文本

v     進入可視模式,單字元模式

V     進入可視模式,行模式

ctrl+v     進入可視模式,列模式,類似於UE的列模式

o     跳轉游標到選中塊的另一個端點

U     將選中塊中的內容轉成大寫

O     跳轉游標到塊的另一個端點

aw     選中一個字

ab     選中括弧中的所有內容,包括括弧本身

aB     選中{}括弧中的所有內容

ib     選中括弧中的內容,不含括弧

iB     選中{}中的內容,不含{}


對標記進行動作

>     塊右移

<     塊左移

y     複製塊

d     刪除塊

~     切換塊中內容的大小寫

http://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845268.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.