vim編輯器

vim文本編輯器(工具)

vim模式

  • 編輯模式(命令模式,默認進入編輯),例如粘貼,刪除
  • 輸入模式(i,a,o)
  • 末行模式(在編輯模式按:進入)

打開單個文件(如果沒有就新建),默認是處在編輯模式中

  • vim FILENAME
  • vim /path/to/somefile
  • vim +# 文件 (打開文件處在#行)
  • vim + 文件(打開文件處在最後一行)
  • vim +/PATTERN :打開文件,定位至第一次被PATTERN匹配到的地方行首

 

移動光標:h l j k

#h  移動#個字符

以單詞爲單位移動:w移至下一個單詞的詞首,

e跳至當前或下一個單詞的詞尾

b跳至當前或前一個單詞的詞首

#w 移至#單詞的詞首

行內跳轉

0:絕對行首

^: 行首的第一個非空白字符

$:絕對行尾

 

行間跳轉

#G:跳轉至第#行

G:最後一行

 

末行模式下,直接給出行號即可

 

翻屏:

ctrl+f 向下翻一屏

ctrl+b 向上翻一屏

 

ctrl+d 向下翻半屏

ctrl+u 向上翻半屏

 

刪除單個字符

x:刪除光標所在處的單個字符

#x:刪除光標所在處及向後的共#個字符

 

刪除命令:d

d命令跟跳轉命令組合使用

#dw(刪除#個單詞),#de,#db

 

dd:刪除當前光標所在行

#dd:刪除包括當前光標所在行內的#行

 

末行模式下:

StartADD,EndADDd

.:表示當前行

$:表示最後一行

+#:向下的#行

 :.,+3y表示當前行及向下3行進行復制

 

粘貼命令P

P:如果刪除或複製爲事整行內容,則粘貼至光標據的下方,如果複製或刪除的內容爲非整行,則粘貼至光標所在字符的後面

p:如果刪除或複製爲整行內容,則粘貼至光標所在行的上方,如果複製或刪除的內容爲非整行,則粘貼至光標所在字符的前面

 

複製命令y,用法同d命令

 

修改:先刪除內容,再轉換爲輸入模式

c:用法同d命令

 

替換:r

R:進入替換械,esc退出替換模式

 

撤消前一次的編輯操作 u

u:撤消前一次的編輯操作

連續u命令可撤消此前的n次操作(n不會大於50,因爲內存只保留了前50次的操作)

#u:直接撤消前#次操作

 

重複前一次編輯操作

.

 

可視化模式

v:按字符選取

V:按矩形選取

 

查找

/PATTERN 向後查找

?PATTERN 向前查找

n

N

 

查找並替換

在末行模式下使用s命令

 

使用vim編輯多個文件

vim FILE1 FILE2 FILE3

:next 切換至下一個文件

:prev 切換至上一個文件

:last 切換至最後一個文件

:first 切換至第一個文件

:qa 退出全部文件

 

分屏顯示

ctrl+w, s:水平拆分窗口

ctrl+w, v:垂直拆分窗口

 

在窗口間切換

ctrl+w, ARROW

:qa 關閉所有窗口

 

分窗口編輯多個文件

vim -o :水平分割顯示

vim -O :垂直分割顯示

 

將當前文件中部分內容另存爲另外一個文件,末行模式下使用命令w

:w

:ADDR1,ADDR2w /path/to/somewhere

 

將另外一個文件的內容填充在當前文件中

:r /path/to/somefile

 

跟shell交互

:! COMMAND

 

替換

  • :s/old/new - 用new替換當前行第一個old。
  • :s/old/new/g - 用new替換當前行所有的old。
  • :n1,n2s/old/new/g - 用new替換文件n1行到n2行所有的old。
  • :%s/old/new/g - 用new替換文件中所有的old。
  • :%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
  • :%s/表示行尾。
  • 所有替換命令末尾加上c,每個替換都將需要用戶確認。 如:%s/old/new/gc,加上i則忽略大小寫(ignore)。

還有一種比替換更靈活的方式,它是匹配到某個模式後執行某種命令,

  • 語法爲 :[range]g/pattern/command
  • 例如 :%g/^ xyz/normal dd。
  • 表示對於以一個空格和xyz開頭的行執行normal模式下的dd命令。
    關於range的規定爲:
  • 如果不指定range,則表示當前行。
    m,n: 從m行到n行。
  • 0: 最開始一行(可能是這樣)。
  • $: 最後一行
  • .: 當前行
  • %: 所有行

查找正則表達式

  • \d: 表示十進制數
  • \s: 表示空格
  • \S: 非空字符
  • \a: 英文字母
  • \|: 表示 或
  • \.: 表示.
  • {m,n}: 表示m到n個字符。這要和 \s與\a等連用,如 \a\{m,n} 表示m 到n個英文字母。
  • {m,}: 表示m到無限多個字符。
  • **: 當前目錄下的所有子目錄。
  • :help pattern得到更多幫助。

#從3行到6行,第2個字符後面添加空格

 

一些按鍵

  • gd: 跳轉到局部變量的定義處;
  • gD: 跳轉到全局變量的定義處,從當前文件開頭開始搜索;
  • g;: 上一個修改過的地方;
  • g,: 下一個修改過的地方;
  • [[: 跳轉到上一個函數塊開始,需要有單獨一行的{。
  • ]]: 跳轉到下一個函數塊開始,需要有單獨一行的{。
  • []: 跳轉到上一個函數塊結束,需要有單獨一行的}。
  • ][: 跳轉到下一個函數塊結束,需要有單獨一行的}。
  • [{: 跳轉到當前塊開始處;
  • ]}: 跳轉到當前塊結束處;
  • [/: 跳轉到當前註釋塊開始處;
  • ]/: 跳轉到當前註釋塊結束處;
  • %: 不僅能移動到匹配的(),{}或[]上,而且能在#if,#else, #endif之間跳躍。
發佈了38 篇原創文章 · 獲贊 14 · 訪問量 6403
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章