歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

[隨筆] Linux下vi命令

Linux下vi命令

本文整理源於網絡進入vi的命令vi filename打開或新建文件,並將光標置於第一行首vi +n filename打開文件,並將光標置於第n行首vi + filename打開文件,並將光標置於最後一行首vi +/pattern filename打開文件,並將光標置於第一個與pattern匹配的串處vi -r filename在上次正用vi編輯時發生系統崩潰,恢復filenamevi 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行尾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個字do刪至行首d$刪至行尾ndd刪除當前行及其後n-1行x或X刪除一個字符,x刪除光標後的,而X刪除光標前的Ctrl+u刪除輸入方式下所輸入的文本搜索及替換命令/pattern從光標開始處向文件尾搜索pattern?pattern從光標開始處向文件首搜索patternn在同一方向重復上一次搜索命令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)和行尾標志($)number顯示行號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:!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號刪除寄存器中*定位到指定行n:

輸入”nG”.

或輸入”ngg”.

或輸入”:n”

這裡,n就是指定的行的行號.注意,有時候G=gg.

*跳到屏幕頂部:

輸入“H”.

這裡,停在第一個非空字符上。加一個數字N,是指距窗口頂部的行數(如’NH’正數第N行)

*跳到屏幕底部:

輸入“L”.

這裡,停在第一個非空字符上。加一個數字,是指距窗口底部的行數(如’NL’倒數第N行)

*跳到屏幕中間:

輸入“M”.

這裡,停在第一個非空字符上。

*跳到文件首:

輸入”gg”.

*跳到文件尾:

輸入“G”.

*光標移至句尾:

輸入”)”.

*光標移至句首:

輸入”(“.

*光標移至段落開頭:

輸入”}”.

*光標移至段落結尾:

輸入”{“.

*跳到行末尾:

輸入“$”.

*跳到行首:

輸入“^”.

或輸入“0”.

這裡輸入’^’是移動到首的第一個非空白字符。

*向後跳到整文件最近距離的單詞末尾:

輸入“e”.

*向前跳到整文件最近距離的單詞首部:

輸入“b”.

*跳到整文件下個單詞首部:

輸入“w”.

**行內移動

以下均可可以加上數字N前綴表示移動N次(如’3fc’表示執行’fc’3次。)

*移動到光標右面第一個字符c的後面:

輸入”fc”.

*移動到光標右面第一個字符c的前面:

輸入”tc”.

*移動到光標左面第一個字符c的前面:

輸入”Fc”.

*移動到光標左面第一個字符c的後面:

輸入”Tc”.

*重復前一次輸入的f, t, F, T命令:

輸入”;”.

例如剛才是’fc’,輸入’;’相當於還是’fc’。

*會反方向重復前一次輸入的f, t, F, T命令:

輸入”,”.

例如剛才是’fc’,輸入’,’相當’Fc’。

**

**在較長行內的移動:

這裡做一個小小的約定:較長的一行如果占據了屏幕的多行,那麼這一行我們把它叫“長行”,屏幕上的一行叫做“屏幕行”。所以對於一個’長行’需要有多個’屏幕行’來顯示。

*在“長行”中移動到下一個“屏幕行”:

輸入”gj”.

*在“長行”中移動到上一個“屏幕行”:

輸入”gk”.

*在”長行”中移動到當前”屏幕行”首:

輸入”g^”.

*在”長行”中移動到當前”屏幕行”尾:

輸入”g”.這裡,如果一行超過了屏幕寬度,會顯示在屏幕的多行,顯示的雖然是多行,但是實際上還是一行,在輸入上下移動的時候雖然是進入了上一行或者下一行,但是往往會呈現出在屏幕中一下跳過n行的樣子。g”.

這裡,如果一行超過了屏幕寬度,會顯示在屏幕的多行,顯示的雖然是多行,但是實際上還是一行,在輸入上下移動的時候雖然是進入了上一行或者下一行,但是往往會呈現出在屏幕中一下跳過n行的樣子。g, g^, gj , gk 在行超過長度時好用。 j,k下上移動的是文本中的一行,當文本一行的長度超過屏幕的一行的時候,j,k移動的時候在屏幕上可能是移動多行。這時候可以用gj,gk來移動屏幕的一行而不是文本的一行。 同理g^和g$是屏幕的行首行尾,而不是文本的行首行尾。

**

*按百分比來跳轉,跳轉到文件50%處:

輸入”50%”.

這裡利用%實現按百分比來跳轉,如果想跳到75%處,輸入“75%”。

**翻頁

可以跟數字前綴N表示執行的倍數,翻頁可以用[PageUP]/[PageDown].

*向下翻頁:

輸入“[Ctrl]f”.

*向上翻頁:

輸入“[Ctrl]b”.

*向下翻半頁:

輸入“[Ctrl]d”.

*向上翻半頁:

輸入“[Ctrl]u”.

**

**相對於光標的翻頁

效果是行向相應的方向滾動了,光標仍然在原來的行,好像是將這個文本拖動了一樣.

*光標所在行移動窗口的頂端:

輸入”zt”.

*光標所在行移動窗口的中間:

輸入”zz”.

*光標所在行移動窗口的底端:

輸入”zb”.

*將第n行滾至屏幕頂部:

輸入“nzt”。

*將第n行滾至屏幕底部:

輸入“nzb”。

*將第n行滾至屏幕中部:

輸入“nzz”。

**

*設置書簽:

輸入“ma”.

這樣,會在當前光標的位置標記一個書簽,名字為 a。書簽名只能是小寫字母。你看不見書簽的存在,但它確實已經在那裡了。只能記錄當前文件裡的書簽,退出vim後再次進入將不會保留這些書簽, 書簽只是當前文件中的一個位置,但是我實踐一下發現,設置完了書簽之後,保存文件,這樣也把書簽保存了。

*到書簽a處:

輸入”`a”.

注意,這個不是單引號,它一般位於大部分鍵盤的 1 的左邊。

*到書簽a所在的行:

輸入“‘a”.

這裡用的是單引號,將跳到書簽所在的行。

*到上次編輯文件的地方:

輸入”

.".  

這個命令很有用,而且你不用自己去標記它,注意這裡輸入的是反引號
,精確到點。 *到上次編輯文件所在行:

輸入“’.”

注意這裡是精確到行,輸入的是引號‘。

*回到最後一次插入狀態返回的位置:

輸入”’^”.

或輸入”

^".  

這裡'.精確到行,
.精確到點(行+列)。 *查看當前所有書簽的列表:

輸入”:marks”.

**搜索相關:

*搜索一個字符串:

輸入“/string”。

這裡”string”就是將要被搜索的字符串,會自動跳到光標後面第一個”string”處。

*在上次搜索的基礎上向前搜索:

輸入“N”。

*在上次搜索的基礎上向後搜索:

輸入“n”.

*逆向搜索一個字符串:

輸入“?string”。

這裡”string”就是將要被搜索的字符串,會自動跳到光標前面第一個”string”處。之後使用的“:n”和“:N”命令方向也會相反了。

*列出查找的歷史記錄:

輸入”q/”.

或輸入”q?”.

這會在vim窗口最下面打開一個新的窗口,列出你的查找歷史記錄可以選擇。

*向下完全匹配當前光標下單詞:

輸入“*”。

之後也可以按’n’繼續向下查找。

*向上完全匹配當前光標下單詞:

輸入“#”。

之後也可以按’N’繼續向上查找。

*向下匹配包含當前光標單詞的字符串:

輸入“g*”。

*向上匹配包含當前光標單詞的字符串:

輸入“g#”。

**

*跳到匹配的另一半括號:

輸入“%”。

這樣可以查找配對的括號,即: )、]、}。

*打開當前光標單詞下的文件:

輸入“gf”。

這裡,假設當前的光標在相應的文件名上面,例如“main.c”等等。

*切換到上次打開文件:

輸入“[Ctrl]^”。

這裡,例如我們輸入了gf進入某個文件,可以輸入[Ctrl]^來回到剛才的文件,這個命令只能在當前和上一個文件之間切換,不能後退多步。

*後退到某個曾經浏覽過的位置:

輸入”[Ctrl]o”.

流行的文本編輯器通常都有前進和後退的功能,可以在文件中曾經浏覽過的位置之間來回移動。在vim中多次輸入”[Ctrl]o”可以執行後退。

*前進到某個曾經浏覽過的位置:

輸入”[Ctrl]i”.

或輸入”[Tab]”.

這樣,如果執行過後退,在vim中多次輸入”[Ctrl]o”可以執行前進。

itxiebo

20160617

Copyright © Linux教程網 All Rights Reserved