[vim]vim命令的操作範圍總結

來源:互聯網
上載者:User

 

1.命令的操作範圍

實際上,vim的很多命令都只在一個文本範圍內進行編輯操作。一個文本範圍可以是一個字元、一個字、一行或其它指定的字元範圍。使用vim命令和文本範圍修飾鍵可以更好地完成編輯任務。這類命令的格式如下:

命令+操作範圍

其中的命令可以為:

d:刪除(delete)命令。刪除制定範圍的文本,並將它們儲存到臨時緩衝區。

y:拷貝(yank)命令。複製指定範圍的文本到臨時緩衝區。

p:粘貼(put)命令。將臨時緩衝區的內容粘貼到當前游標處。

附:系統會在緩衝區保留最後9個被刪除的行。因此,如果想恢複最後一次被刪除的行則在非編輯狀態下使用“"1p”命令。如果想恢複倒數第2次被刪除的行則在非編輯狀態下使用“"2p”命令。

c:修改(change)命令。它是刪除命令與插入命令的組合。

其中的操作範圍可為:

e:從游標所在位置至該字的最後一個字元。

w:從游標所在位置至下一個字的第一個字元。

b:從游標所在位置至前一個字的第一個字元。

 

$:從游標所在位置至該行的最後一個字元。

0:從游標所在位置至該行的第一個字元。

 

(:從游標所在位置至該句子的第一個字元。

):從游標所在位置至下一個句子的第一個字元。

 

{:從游標所在位置至該段落的第一個字元。

}:從游標所在位置至該段落的最後一個字元。

 

gg:移至文首

GG:移至文末

2.命令的大小寫

另外還有一些基本的命令,大寫形式一般是該命令的增強版本或實現相反的功能:

i(insert):插入命令,在游標的前面插入文本。

I(insert):插入命令,但在游標所在行的行首插入文本。

a(append):附加命令,在游標的後面插入文本。

A(append):附加命令,但在游標所在行的行尾插入文本。

o(open):開啟命令,在所在游標的下一行增加新行,並從行首開始插入文本。

O(open):開啟命令,在所在游標的上一行增加新行,並從行首開始插入文本。

 

x:刪除游標處的字元。

X:刪除游標前的字元。

d:dw刪除游標所在字。dd:刪除游標所在行。

D:從游標開始刪除至行尾。

 

.:重做命令,即重複前面剛執行過的命令。

u(undo):取消剛才執行過的更改。

U(undo):把當前行恢複成編輯前的狀態,不管對此行編輯了多少次。

 

p:將緩衝區的內容粘貼在游標所在行的下一行。

P:將緩衝區的內容粘貼在游標所在行的上一行。

 

c:cw:刪除游標所在的字並進入輸入模式。cc:刪除游標所在行並進入輸入模式。

 

r:rx用x取代游標所在位置的字元,x表示一個字元。可用nrx替換n個字元為x。

R(replace):進入替換模式,直到“ESC”為止。

 

n(next):尋找字串時,尋找下一個。

N(next):尋找字串時,尋找上一個。

3.滾動螢幕

 

滾動螢幕的命令

^F  向前滾動一屏

^B  向後滾動一屏

^D  向前滾動半屏

^U  向後滾動半屏

在螢幕內移動

H  移動到起始點----螢幕首行

M  移動到螢幕的中間行

L   移動到螢幕的末行

nH  移動到螢幕首行下面的第n行

nL  移動到螢幕末上上面的第n行

 

4.尋找和替換

 

  1. 行內搜尋。
    1. f命令可以進行行內搜尋。輸入fx可以找到下一個x字元。
    2. F命令可以在反方向進行行內搜尋,輸入Fx可以找到上一個x字元。
    3. t命令同樣是進行行內搜尋,但是游標停留在合格字元的前面。輸入tx使游標停留在下一個x字元的前面。
    4. T命令可以在反方向進行行內搜尋,但是游標停留在合格字元的下一個字元上。輸入tx使游標停留在上一個x的後面的字元上。
    5. %可以搜尋與之匹配的對應的()[]{}。這個功能對於書寫程式特別有用。
  2. 全文的搜尋。鍵入/後,游標進入VIM底部的命令列,這時就可以輸入以/為開始的/搜尋命令了。
    1. 最簡單的尋找。輸入/string就可以尋找string字串。
    2. 繼續尋找。在第一次搜尋後輸入n將會繼續進行上一次搜尋,如果輸入3n那麼會找到後面第三個符合的字串。大寫的N會在反方向,也就是向上進行搜尋。
    3. 向上搜尋。輸入?可以向上搜尋。隨後的n命令將會繼續向上搜尋,N向下搜尋,其他和/一樣。
    4. 對大小寫匹配。
      1. 在命令列輸入:set ignorecase可以設定搜尋以忽略大小寫方式進行。輸入:set noignorecase可以設定搜尋以匹配大小寫方式進行。預設的,將匹配大小寫。這個預設設定可以在.vimrc中修改。
      2. 大小寫智能匹配模式。輸入命令:set ignorecase smartcase可以設定為智能大小寫匹配模式。在這種模式下,如果你輸入的字串中至少包含一個大寫字母,那麼就會以大小寫敏感模式進行搜尋,否則以忽略大小寫入模式進行搜尋。
      3. 在搜尋命令中指定大小寫。在幾種大小寫搜尋模式中進行轉換總要輸入長長的一串指令,如果需要不斷地轉換模式,確實有些麻煩。所以你可以直接在搜尋命令中指定大小寫匹配模式。/c表示忽略大小寫,而/C表示對大小寫敏感。
    5. 尋找當前詞。一個簡單的方法可以讓你尋找下一個和當前詞一樣的詞,你不比輸入/currentword,你可以直接按下*就可以尋找下一個currentword。#可以讓你向上尋找同一個單詞。
    6. 調整尋找後的游標位置。
      1. 使用/string/3會使在游標轉到找到string字串的行下面的第3行。第1行從包含string的行算起。同樣可以使用/string/-2來使游標停留在包含string的行的前面2行。
      2. 使用/string/e可以使游標停留在string字串的末尾而不是預設的第一個字元位置。/string/b則表示停留在string第一個字元的位置,不過預設就是如此,我們不比多此一舉。但是/string/b+2卻可以使游標停留在string字串的第二個字元的位置,這裡是r。在e或者b的後面+或者-數字,可以進一步調整游標的位置。
    7. 特殊字元。在搜尋命令中,  .*[]^%/?~$這10個字元有著特殊意義,所以在使用這些字元的時候要在前面加上一個反斜線/。而/e表示<esc>;/t表示<tab>;/r表示<cr>;/b表示<bs>。
    8. 匹配換行或空格。使用/n可以表示一個換行;而/s表示匹配空白,注意是空白不是空格。/_s表示匹配換行或者空格;/_a表示匹配換行或者一個字母。比如:/the/nword尋找以the結束並且下一行以word開始的行的位置。/the/_sword尋找the和word之間以空白或者換行分割的位置。/the/_s/+word表示the和word之間可以有多個空白。/+的含義可以在後面找到。
    9. 限定詞首或者詞尾。/<可以限定找到是以指定字串開始的單詞。比如//<the可以找到以the開始在字串,但是會忽略在單詞中間包含the的字串。而/>則是限定必須是以指定字串結尾的單詞。
    10. 行首和行尾。輸入/^string尋找以string開始的行,並且游標停留在這個string的第一個字元。輸入/string$則尋找以string結束的行,並將游標停留在這個string的第一個字元。這個模式不會忽略前置或者後置的空格。
    11. 匹配任何一個字元。句號.可以匹配任何一個字元。例如/t.e可以找到the或者tae或者tue。
  3. 更加複雜的匹配模式。實際上,/搜尋可以使用非常複雜的匹配模式。下面列出了其中一些複雜的匹配模式。
    1. 可重複的字元。
      1. 使用*表示它前面的字元可以重複多次或者0次。比如/be*可以匹配b,be,bee,beee等等。但是這也會包含b,因為e重複0後是空。如果要匹配諸如be,bebe,bebebe的字串可以使用/(和/)把他們包括起來,形如://(be/)*。
      2. 使用/+來限定為重複至少一次到無數次。如:/be/+可以匹配be,bee,bee等等。
      3. 重複0次或者一次。/=可以指定重複0次或者一次。/strings/=表示匹配string或者strings。這在尋找單詞的複數形式特別有用.
      4. 指定重複的次數。/{n,m}可以指定重複n到m次。比如:/be/{2,4}將會匹配bee,beee,beeee。同樣可以使用/{,4}表示匹配0到4次;/{4,}表示4次到無數次;/{4}表示重複4次。
    2. 匹配列表中的一個。使用一個以/|分割的列表,可以表示匹配列表中任何一項。比如/one/|two表示尋找one或者two;/one/|two/|three表示尋找one或者two或者three。
      1. 一個複雜的執行個體:/end/(if/|while/|for/)將會尋找endif,endwhile以及endfor。
      2. 字元列表。使用[0-9]可以表示一個0到9範圍的字元。比如/string[1-5]表示尋找string1,string2,string3,string4,string5。當然也可以使用[a-z]表示字元a到z中間的一個。
      3. 特殊的字元集合。使用/d也可以表示0到9的數字,這個選項可以代替[0-9]。/D表示非數字代替[^0-9];/x表示十六進位數代替[0-9a-fA-F];/X表示非十六進位數代替[^0-9a-fA-F];/s表示空白字元代替[ ] (<Tab> 和<Space>);/S表示非空白字元代替[^ ] (除<Tab> 和<Space>之外);/l表示小寫字母代替[a-z];/L表示非小寫字母代替[^a-z];/u表示大寫字母代替[A-Z];/U表示非大寫字母代替[^A-Z]
  4. 搜尋並替換。輸入:[range]s/from/to/[flags]命令可以搜尋匹配的字串並且替換為指定的字串。這是一個稍微複雜的命令。其中[range]是一個可選項,用來指定搜尋替換的範圍。[flags]也是一個可選項,用來指定搜尋替換的處理方式。所以這個命令的簡單形式是:s/from/to/。
    1. 搜尋替換的範圍。如果沒有指定範圍,則只在當前行進行搜尋替換。
      1. 在所有行進行搜尋替換。範圍符號%表示在所有行進行搜尋替換。:%s/from/to/就是在全文尋找from並替換為to。
      2. 在指定的行上進行搜尋替換。:1,50s/from/to/表示在第1行和第50行之間(包括1和50行)進行搜尋和替換。:45s/from/to/表示僅僅在第45行進行搜尋和替換。而"1,$"行號範圍和“%“是等價的。
    2. 處理方式。我現在使用的VIM預設的方式是無須確認。不過好像不同版本的預設的處理方式是不同的。
      1. 無須確認。方式符號g表示直接替換無須進行確認。:%s/from/to/g表示在全文中尋找from並且直接全部替換為to。
      2. 列印。處理方式符號p表示在替換時列出每個被改變的行。手冊中這麼說,但是實際效果卻讓我很迷惑。
      3. 確認後處理。處理方式符號c表示在進行替換前需要使用者進行確認。這時你可以選擇(y/n/a/q/1/^E/^Y):y表示同意當前替換;n表示不同意當前替換;a表示替換當前和後面的並且不再確認;q表示立即結束替換操作;1表示把當前的替換後結束替換操作;^E向上滾屏^Y向下滾屏,用來協助查看前後內容以決定進行操作。
5.others

 

~:大小寫轉換。在非編輯狀態下,將游標移至某個字元,使用~命令,那麼小寫字母會變成大寫,大寫的字母會變成小寫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.