Vim學習筆記(二)

來源:互聯網
上載者:User

在前面一篇blog(Vim學習筆記)中介紹VIM的使用用法後,該文章達到了曆史性的最高訪問量。在上面的那篇文章中,介紹了VIM的基本用法,基本上是個人在聯絡Vimtutor這個教程之後對不熟悉的指令的總結。但是,隨著學習的深入,發現掌握這些基本的命令還遠遠不夠,雖然網上有大批的資料可以下載學習,但是迫於沒有一種類似於入門層級的教程,所以還是希望有相關的從最常用最基本的知識講起的教程。目前看來,《Learn Vim Progressively》這篇文章應該是比較好的入門級教材了吧,而酷殼則進行了翻譯,網址在這裡簡明 Vim 練級攻略。以下是我的學習筆記:

1. 插入:
a: 在游標之後插入
o: 在當前行後面插入一個新行
O: 在當前行前面插入一個新行
cw: 替換從游標到後一個單詞結尾的字元。

2. 移動:

0: 移動到行頭
^: 到本行第一個不是blank的字元。(blank字元即空格,tab,換行和斷行符號)
$: 到本行行尾
g_: 到本行最後一個不是blank字元的位置
/pattern: 搜尋pattern的字串。(搜尋多個按n回到下一個)

3. 拷貝:

P:在當前位置之前拷貝(將緩衝區內的內容拷貝過來)
p: 在當前位置之後拷貝
yy: 拷貝當前行。(在某行使用之後,相當於拷貝了該行,然後到指定位置,使用P命令粘貼到指定的位置)


4.Undo/Redo

u : undo
Ctrl + r : redo

5. 開啟儲存
e<path/file> : 開啟一個檔案
w: 儲存
saveas<path/file>: 另存新檔某個地方
x,wq: 儲存(x表示僅需要儲存時儲存,wq則是儲存)
ZZ:不需要輸入前面的冒號即可儲存,此時會退出。(不同於前面的冒號+斷行符號)
bn, bp: 同時開啟多個檔案的話,使用這個來切換到上一個或者下一個檔案。

6. 更好
.: 輸入一個點號會重複執行上次的命令
N<command>: 重複執行command命令N次。(比如2dd表示刪除兩行,3p表示粘貼三次)

7. 更強
NG: 到第N行(比如3G,表示跳轉到第三行)另外可以使用:137跳轉到137行(感覺更方便)
gg: 跳轉到第一行(相當於1G,或者:1)
G: 跳轉到最後一行
單詞的移動:
w: 到下一個單詞的開始
e: 到下一個單詞的結尾
(如果認為分號也是一個單詞的話,使用E/W)
比如:x = (name_1, vision_3); 後面的這個分號就要注意。

%: 匹配括弧,先移動游標到一個括弧處,然後在命令模式下輸入%,即可跳轉到匹配的括弧。
*:匹配游標到當前所在的單詞。(向下匹配)(匹配就是知道相同的單詞,比如在當前行有5個單詞test,那麼按*就會尋找並跳轉到下一個單詞test的起始之處)
#:匹配游標到當前所在單詞(向上匹配)


8. 更快
一定要記住游標的移動。
eg:0y$:現跳轉到第一行,然後拷貝,拷貝到行末,
類似的,ye:開始拷貝,拷貝到笨蛋次的最後一個(e其實就是end)
y2/foo:拷貝兩個foo直接的字串(這種用法很奇特,前面沒有講到)

還有很多時間並不一定你就一定要按y才會拷貝,下面的命令也會被拷貝:
d (刪除 )
v (可視化的選擇)
gU (變大寫)
gu (變小寫)
等等

9.Vim超能力
fa: 到下一個為a的字元處。同理,fs到下一個為s的字元處
t,:到逗號前的第一個字元處。同理,ta就是到a前的第一個字元出。
3fa:在當前行尋找第三個出現的a
F和T:作用和f與t一樣,只是相反的方向。
dt": 刪除所有的內容,知道遇到了雙引號,類似的可以換成其他的如dt+任一字元。

==========================以下內容為以前沒接觸的,重點回顧===================
1. 地區選取項目
<action>a<object> or <action>i<object>
<action> 可以是任何命令,如d(刪除),y(拷貝),v(可視化模式選擇).
<object>可以是:w表示一個單詞,s表示一個句子,p一個段落。也可以是特殊字元比如),}等等。

對於(map (+)("foo")),游標在第一個o的位置。
則:vi" ----對應的是<action>i<object>這種情況,v表示模式選擇,然後i表示的是不包括這個特殊字元,所以是從第一個o所在的包含在"符號中的。
其他的類似,不同的是a是要包括內容的。
        vi" → 會選擇 foo.
        va" → 會選擇 "foo".
        vi) → 會選擇 "foo".
        va) → 會選擇("foo").
        v2i) → 會選擇 map (+) ("foo")
        v2a) → 會選擇 (map (+) ("foo"))


塊操作
塊操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]
Windows下面是Ctrl+q而不是Ctrl+v開始塊操作。
做法是:
1. 先移動游標到某個地方。
2. Ctrl+V開始塊操作。
3. 選擇塊的範圍(此時可以用hjkl,或者%,或者Ctrl+d等等)
4. I-- Esc(選擇對應的操作,這裡是插入ii,所以現I表示插入,然後--,但是這樣只是對最開始的那個起作用,要應用到所有的塊,需要使用Esc鍵)

自動提示<Ctrl+n> <Ctrl+p>
所謂的自動提示:實際上是Vim對使用者近期輸入的單詞進行統計記憶的結果,它的這個自動提示,是當你近期輸入某個單詞後,再次輸入的時候,如果輸入首單詞,使用該快速鍵就能匹配相應單詞,從而自動補全。
如輸入下面的兩個單詞:
LaTeX
XeLaText
然後在輸入下面的這個,只輸入首單詞,在利用C+n組合,就會自動補齊。
XeLaText LaTeX

宏錄製:
qa把你的操作記錄在寄存器a內
然後@a就會重複這個被記錄的宏
@@用來重複自己的一個宏(要指定某一個特定的就要用@xx,其中xx即前面儲存的名)

qaYp<C-a>q→
        qa 開始錄製
        Yp 複製行.
        <C-a> 增加1.
        q 停止錄製.
    @a → 在1下面寫下 2
    @@ → 在2 正面寫下3
    現在做 100@@ 會建立新的100行,並把資料增加到 103.


可視化選擇v,V,Ctrl+V(這個在前面有講到)
首先的工作自然是使用這個工具來選擇了,隨便哪一種都可以。
其次選擇後就是對該模組進行操作,編輯了。可以有
J : 把所有行都串連起來
< or > : 左右縮排
=:自動完成縮排(原始動畫中就是這個效果,看了半天發現縮排變化了)

如何在所有選中行的末尾都加入一個東東呢?
就和在前面加入--的那個例子一樣,先選中模組,然後跳到末尾$,然後加入的話是A,加入某個就是輸入字串了,應用到所有模組的部分就是按下Esc即可。


分屏split和vsplit
:split: 建立分配(vsplit則是建立垂直分屏)
C-w<Direction>: Direction可以是hjkl或者方向鍵,用來不同螢幕切換
C-w_或者C-w|: 用來最大化尺寸。
C-w+或者C-w-: 增加尺寸。

分屏的使用:
1.使用大寫的O參數來垂直分屏。vim -On file1 file2
2. 使用小寫o參數來水平分屏。 vim -on file1 file2
3. 上下分割,並開啟一個新檔案。 :sp filename
4. 左右分割,並開啟一個新檔案。 :vsp filename
5. 螢幕之間的移動:Ctrl + W + (h, j, k, l)(不同參數表示移動的方向)
   比如Ctrl + W + h表示向左邊的螢幕移動。
6. 螢幕尺寸的變化。
   Ctrl + W + : 表示增加高度。
   Ctrl + W - : 表示減少高度
   Ctrl + w = : 使得所有的螢幕有相同的高度
7. 具體的更加詳細的內容見help文檔或者http://coolshell.cn/articles/1679.html
   (注,酷殼上的部分命令可能由於版本原因已失效,應該有新的快速鍵代替)

VIM還有更多的功能需要學習,關鍵是在使用中不斷加深練習,還有強大的擴充外掛程式,另外在瀏覽器中也有相應的擴充,可謂功能強大。後續會繼續學習,並做好筆記以及時總結學習所得。

聯繫我們

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