Ubuntu下玩轉VI 在命令列下編輯檔案

2021-06-29 00:29:20 字數 3774 閱讀 6817

**:

vi編輯器是linux下常用而重要編輯器,可在全螢幕方式下編輯乙個或多個檔案。若在vi執行時沒有指定乙個檔案,那麼vi命令會自動產生乙個無名的空 的工作檔案。若指定的檔案不存在,那麼就按指定的檔名建立乙個新的檔案。若對檔案的修改不儲存的話,v i命令並不改變原來檔案的內容。 

下面是vi命令使用的一些選項及含義: 

-c sub-command 在對指定的檔案編輯前,先執行指定的命令 sub-command . 

-r filename 恢復指定的檔案filename . 

-r 將指定的檔案以唯讀的方式放入編輯器中,這樣不會儲存對檔案的任何修 改。 

-y number 將編輯視窗的大小設為number行。 

下面是vi編輯所處的三種模式: 

.命令模式 進入vi時所處的模式。在此模式下使用者可輸入各種子命令對進行*作,如刪除行、貼上行、移向下乙個字、移向不同行等。 

.文字輸入模式 在此模式下可以修改一行的內容並增添新行。在命令模式下鍵入a 、i 或c鍵可進入文字輸入模式,按escape鍵可返回命令模式。 

.命令項模式 在此模式下,可以通過子命令輸入更多的引數。如:w子命令要求輸入一檔名,「/」子命令要求輸入乙個查詢項。使用者使用escape鍵返回命令模式。 

下面是自命令模式下執行的,在同一行上移動的自命令: 

h 將游標左移一格。 

l 將游標右移一格。 

j 將游標下移一格。 

k 將游標上移一格。 

w 將游標移到下乙個小字的前面。 

w 將游標移到下乙個大字的前面。 

b 將游標移到前乙個小字的前面。 

b 將游標移到前乙個大字的前面。 

e 將游標移到下乙個小字的後面。 

e 將游標移到前乙個大字的後面。 

fc 把游標移到同一行的下乙個c字元處。 

fc 把游標移到同一行的前乙個c字元處。 

tc 把游標移到同一行的下乙個字元c的前一格。 

tc 把游標移到同一行的前乙個字元c的後一格。 

number| 把游標移到遞number列上。 

下面是命令模式下改變螢幕顯示的子命令:

z- 把當前行作為螢幕的最後一行,並重新顯示螢幕。 

z. 把當前行作為螢幕的中間一行,並重新顯示螢幕。 

ctrl+l 重新顯示螢幕當前內容。 

/pattern/z- 尋找pattern的下乙個位置,並把所在行設為螢幕的最後一行。 

下面是命令模式下在行間移動的子命令: 

+或enter 把游標移至下一行第乙個非空白字元。 

- 把游標移至上一行第乙個非空白字元。 

0 把游標移到當前行的第乙個字元處。 

$ 把游標移到當前行的最後乙個字元處。 

h 把游標移到螢幕最頂端一行。 

l 把游標移到螢幕最底端一行。 

m 把游標移到螢幕中間。 

下面是在命令模式下用來查詢字串所使用的子命令: 

/pattern 向後尋找指定的pattern ,若遇到檔案尾,則從頭再開始。 

?pattern 向前尋找指定的pattern ,若遇到檔案頭,則從尾再開始。 

n 在上次指定的方向上,再次執行上次定義的查詢。 

n 在上次指定的方向的相反方向上,再次執行上次定義的查詢。 

/pattern/+number 將游標停在包含pattern的行後面第number行上。 

/pattern/-number 將游標停在包含pattern的行前面第number行上。 

% 移到匹配的「()」或「{}」上。 

下面是在命令模式下用來顯示頁面的子命令: 

ctrl + f向後滾一頁。 

ctrl + d向後滾半頁。 

ctrl + b向前滾一頁。 

ctrl + u向前滾半頁。 

ctrl + e螢幕向下滾一行。 

ctrl + y螢幕項上滾一行。 

下面是在文字輸入模式下用來輸入文字的子命令(使用者可在任何時候按escape返回到命令模式): 

a 在游標之後開始輸入文字。 

a在行尾開始輸入文字。 

i在游標之前開始輸入文字。 

i在行首第乙個非空白字元前輸入文字。 

o在游標所在行後插入一空行。 

o在游標所在行前插入一空行。 

下面是在命令模式下改變文字所使用的子命令(使用者可在任何的時候按escape鍵返回到命令模式): 

cc或s 修改一整行。 

c 改變一行游標位置以後的部分。 

cw 改變游標所在單詞。 

dd刪除當前行。 

d 刪除游標所在行游標後面的內容。 

dw刪除游標所在的單詞。 

j 把下一行內容加到本行行尾。 

rc把光符所在字元替換成c . 

r 覆蓋本行內容。 

u恢復上一次的修改。 

x刪除游標所在的字元。 

~ 改變游標所在出字元的大小寫。 

. 重複上乙個*作。 

《把當前行移到左邊。 

>>把當前行移到右邊。 

下面是用於檔案中拷貝文字的字命令: 

p 將緩衝區內容取到游標所在行的下面一行。 

p 將緩衝區內容取到游標所在行的上面一行。 

「bd 將文字刪除至有名緩衝區b . 

「bp 張貼有名緩衝區b中內容。 

yy把當前行放入緩衝區。 

y 把當前行放入緩衝區。 

yw把游標所在的單詞放入緩衝區。 

:g//d, 刪除匹配的所有行

下面是用於儲存檔案的子命令: 

:w 回寫修改後的檔案。 

:w filename 當filename不存在時,把修改後的檔案存為檔案filename ,當檔案filename存在時,報錯。 

!w filename 如果檔案filename存在時,把修改後的檔案儲存為檔案filename . 

下面列出了在vi編輯的多個檔案之間切換所用的子命令: 

:n開始編輯vi啟用的檔案列表中的下乙個檔案。 

:n filenames 指定將被編輯的新的檔案列表。 

下面列出了用於在當前檔案和另外乙個檔案間切換的子命令: 

:e filename 使用filename啟用vi (在vi中裝入另乙個檔案filename)。 

e!重新裝入當前檔案,若當前檔案有改動,則丟棄以前的改動。 

:e+filename 使用filename啟用vi ,並從檔案尾部開始編輯。 

:e+number filename 使用filename啟用vi ,並在第number行開始編輯。 

:e# 開始編輯另外乙個檔案。 

下面是在本檔案中加入其他檔案**所使用的子命令: 

:r filename讀取filename檔案,並將其內容加到當前檔案後。 

:r ! command執行command檔案,並將其輸出加到當前檔案後。 

下面是vi中其他的子命令: 

ctrl+g 取得正在編輯檔案的有關資訊。 

:sh啟動sh ,從sh中返回可用exit或ctrl+d . 

:! command 執行命令command . 

!!重新執行上次的:! command子命令。 

:q退出vi ,若使用者對編輯的檔案有所修改,系統不會讓使用者使用q命令退出。 

:q!退出vi而不管是否對檔案有改動。 

zz或:wq 儲存對檔案的修改並退出vi . 

使用者可在乙個特殊的檔案.exrc中定義特殊的vi命令。在vi中使用這些命令時,必須在該命令前加上乙個冒號。

注意:vi命令並不鎖住所編輯的檔案,因此多個使用者可能在同時編輯乙個檔案,那麼最後儲存的檔案版本將被保留。

linux 命令列下 玩轉svn

1 檢視某個路徑下檔案 svn list path2 上傳檔案 svn import m new pro needtoupdatefilename proname needtoupdatefilename 待上傳的檔名 proname 上傳後你給工程取的名字3 檢出檔案 svn checkout f...

ubuntu下的命令列

1 如何把命令執行的結果儲存到檔案當中?這個問題太簡單了,大家都知道,用 把輸出轉向就可以了 例子 lhd hongdi ls ls.txt lhd hongdi cat ls.txt 說明 是把輸出轉向到指定的檔案,如檔案已存在的話也會重新寫入,檔案原內容不會保留 是把輸出附向到檔案的後面,檔案原...

ubuntu下命令列傳送郵件

參考 驗證傳送成功,請大膽嘗試,但後果自負哈 不用說首先安裝軟體,ubuntu大家都知道的哈,傻瓜式sudo apt get install mutt msmtp,一切預設設定就行。接著開始各種配置,很簡單,不想麻煩,可以copy,當然我也是ctrl c的 mutt 系統全域性設定 etc mutt...