天天看點

初識 Vim ,未來的路還很長安裝 VimVim 的三種模式基本操作 ( 移動、寫入、儲存等等 )标準操作 ( 複制、粘貼、撤銷等等 )進階操作 ( 分屏、合并、查找等等 )配置 Vim

VIM維基

  • 安裝 Vim
  • Vim 的三種模式
  • 基本操作 移動寫入儲存等等
  • 标準操作 複制粘貼撤銷等等
  • 進階操作 分屏合并查找等等
    • 查找
    • s 查找替換
    • r 合并檔案
    • 分屏
      • 分屏模式下主要的快捷鍵
    • 運作外部指令
  • 配置 Vim
    • 參數選項功能
    • 以指令模式激活選項參數
    • 在配置檔案中配置選項參數

安裝 Vim

sudo apt install Vim

or

sudo apt-get install Vim

Vim 有内嵌一個教程小程式

Vimtutor

, 在指令行輸入 Vimtutor 就可以出現這個教程頁面了。 英語不好的我, 則是看看網上的教程。

Vim 的三種模式

  • 互動模式 : Interactif Mode 。 這是 Vim 的預設模式, 在打開 Vim 之後就是這個模式,這個模式中不能編輯文本, 最好也别亂按, 否則會導緻觸發其他相應的操作。
  • 插入模式 : Insert Mode 。 進入這個模式就是文本編輯的頁面, 會出現光标; 進入這個模式有集中方式, 最常用的就是按字母

    i

    ( i 是insert的首字母, 插入的意思 )。 退出這個模式 按下

    Esc

    即可退出。
  • 指令模式 : Command Mode 。 這個模式下, 可以運作一些指令, 例如 退出、儲存等等; 也可以用這個模式來激活一些 Vim 的配置 ( 例如文法高亮、顯示行号等等 ); 甚至還可以發一些指令給終端指令行, 例如 ls, locate, cp等等。進入這個模式, 首先要處于互動模式下, 然後按下冒号 ( 在一般的鍵盤上是要按下 Shift 鍵 + 分号鍵 )。 輸入指令後, 再按回車, 就會執行此指令。 執行指令後, 就又回到互動模式了。

總有一天你會明白 ” 一入 Vim 深似海, 從此滑鼠是路人 “。

基本操作 ( 移動、寫入、儲存等等 )

打開 Vim :

vim
           

打開某個檔案名 : 即

vim 檔案名

  • i : 插入文本
注意看左下角有一個

INSERT

, 說明我們處于 Insert Mode ( 插入模式下 )。

Esc

退出回到 互動模式
  • 移動 : h、j、k、l ( 上下左右移動 )

在 Vim 互動模式下, 可以 在文本中移動光标, 如下表:

按鍵 作用
h 向左移動一個字元
j 向下移動一個字元
k 向上移動一個字元
l 向右移動一個字元
  • 0 和 $ : 移動到行首和行末

    在互動式模式下:

    為了将光标定位到一行的開始位置,我們隻需要按下數字鍵 0 即可。當然了,鍵盤上的 “Home” 鍵也有相同效果。但是我們還是建議用 0 鍵,畢竟不用隔那麼老遠去按 Home 鍵。

    為了将光标定位到一行的末尾,我們隻需要按下美元符号鍵

    $

    即可。 當然了,鍵盤上的

    End

    鍵也有相同效果。但是我們還是建議用 $ 鍵, 畢竟不用隔那麼老遠去按 End 鍵。
  • w :一個單詞一個單詞移動
  • :w

    :儲存檔案。 ( 後面可跟自己命名的檔案 )。
  • : q

    : 退出。 也可以強行退出

    :q!

  • :wq

    : 儲存後退出。

标準操作 ( 複制、粘貼、撤銷等等 )

在互動模式下做大量的操作, 如果你不是互動模式, 按 ESC 。

  • 删除字元 :

在互動式模式下, 将光标定位到你所想删除的字元上, 按下字母

x

( 小寫 ), 你會發現這個字元會被删除。 效果和 Backspace 一樣。

也可以一次性删除多個字元, 從管标開始往後删除 n 個字元, 就先按下鍵盤的數字, 然後再按下

x

  • d : 删除單詞、行等等

雖然是删除, 但是删除的記憶體會被緩存到記憶體, 相當于 ” 剪切 “。

dd

:删除行, ( 連續按兩次來删除光标所在的那一行 ), 也可以和數字配合使用删除多行。

dw

: 删除一個單詞, 将光标置于一個單詞的首字母處, 然後按下 dw ,如果光标放在某個字元上,則隻會删除目前字元到下一個空格前的是以字元。 也可以删除多個單詞 ( 如 3dw / d3w )。

d0

d$

:删除行首或行末 : 按下 d 鍵, 再加 0 鍵, 就會删除從光标處到行首的所有字元。按下 d 鍵, 再加 $ 鍵, 就會删除從光标處到行末的所有字元。

  • yy :

複制到記憶體中按兩次y會把光标所在行複制到記憶體中。和dd類似,dd用于“剪切”光标所在行到記憶體中,而yy是“複制”。yw則會複制一個單詞,y$則是複制從光标所在處到行末的所有字元,y0是複制從光标所在處到行首的所有字元。

  • p : 粘貼如果你之前用dd來剪切過一行,或者用yy來複制過一行,或者是同類操作(比如y$, dw, y0, d0,等等),那麼可以使用p鍵來粘貼這些内容。
注意 : 用 p 來粘貼時, 内容會被粘貼到光标之後去。

如果你用 yy 複制了一行, 再用 p 來粘貼, 那麼需要在 p 前面加上次數。例如 7p , 表示粘貼 7 次。

  • r : 替換一個字元

在互動式模式下, 把光标放置到想要替換的字元上, 按下

r

鍵, 接着輸入想要替換的字元。 例如 rs 替換目前的字元為 s 。 如果使用大寫 R , 那麼就是切換到替換模式了, 左下角會顯示 “REPLACE”。

  • u : 撤銷操作

如果要撤銷最近的修改, 隻需要按下 u 鍵, 同理, 如果要撤銷最近四次修改, 可以按下 4 , 再按下 u 。

Vim 中數字 + 指令是很通用的方式。

為了取消撤銷,也就是重做之前的修改, 隻需要按下

Ctrl + r

鍵。

  • g : 跳到指定行

一個檔案中都有一個行号,類似于一個坐标。在 Vim 中, 我們可以看到在右下方有這樣的字樣:

7,1

7 表示 7 行, 1 表示 1列。

要跳到最後一行: 按下大寫的 G ( 大寫的 G ,shift + g )

要跳到第一行: 按下 gg ( 兩次 g 鍵 )

跳轉到指定行: 行号 + G 或者 行号 + gg

進階操作 ( 分屏、合并、查找等等 )

例如 : 合并、查找、替換、分屏等等

這些操作在互動模式下進行。

/ : 查找

如果你按下

/

( 斜杠 ), 那麼就進入了查找模式。

這時, 你會在左下方看到一個斜杠符号, 而且光标會轉到斜杠右邊, 意思是讓你輸入要查找的字元串。

此時輸入你要查找的字元串, 然後按下回車, 光标就會轉到文中下一個查找到的比對處; 若果字元串不存在, 那麼會顯示 ” Pattern not found “ 。

如果要查找下一個比對項,隻需要按n鍵。如果要反向查找,需要按 N( 大寫的 n,Shift + n )。

用斜杠來進行的查找是從目前光标處開始。 如果你要從檔案最開始處查找,那麼将斜杠

/

替換為問号

即可,其他功能是一樣的。

: s 查找替換

要實作字元串替換, 有好幾種方法。

最簡單的是:

:s/舊字元串/新字元串

。 ( 但隻會替換光标所在行比對的第一個人字元串 )

列出所有實作查找替換的方法:

方法 效果
:s/舊字元串/新字元串 替換光标所在行的第一個比對的字元串
:s/舊字元串/新字元串/g 替換光标所在行的所有比對的字元串
:#,#s/舊字元串/新字元串/g 替換檔案中第 # 行到第 # 行所有比對的字元串
:%s/舊字元串/新字元串/g 替換檔案中所有比對的字元串 ( 應該是最常用的 )

: r :合并檔案

可以用

:r

在光标處插入一個檔案的内容。例如:

:r 另一個檔案名

可以使用 Tab 鍵來補全另一個檔案的路徑。

分屏

Vim 可以分屏, 可以同時打開好幾個檔案。

分屏之後, 螢幕的每一塊被成為 viewprot 。”視口”

  • :sp

    橫向分屏

:sp 就可以把螢幕分成兩塊, ( 預設是打開的同一檔案 ) :sp + 檔案名可以打開另一個檔案,( 檔案路徑名可以 Tab 補全 )

  • :vsp

    垂直分屏 ( 同上 )

分屏模式下主要的快捷鍵

分屏模式下實用的快捷鍵:

操作 效果

Ctrl + w

再按

Ctrl + w

從一個 viewport 移動到另一個 viewport

Ctrl + w

然後按

h

移動光标到左邊的 viewport

Ctrl + w

然後按

j

移動光标到下邊的 viewport

Ctrl + w

然後按

k

移動光标到上邊的 viewport

Ctrl + w

然後按

l

移動光标到右邊的 viewport

Ctrl + w

然後按

+

擴大目前的 viewport

Ctrl + w

然後按

-

縮小目前的 viewport

Ctrl + w

然後按

=

重新均勻配置設定各個 viewport 的占比

Ctrl + w

然後按

r

調換各個 viewport 的位置 。用 R 的話是反向調換

Ctrl + w

然後按

q

或者按

c

關閉目前 viewport

Ctrl + o

或者

only

隻保留目前所在的 viewport , 關閉其他的 viewport

:! 運作外部指令

在 Vim 中可以運作一些終端指令。 隻要先輸入

:!

, 然後接指令名稱。

例如:

:!ls

, 就是 Vim 打開的檔案所在目錄運作 ls 指令, 就會列出目前目錄包含的檔案。

配置 Vim

可以采用兩種方式來配置 Vim :

  • 激活或不激活選項參數: 參考選項參數完整文檔 ( 科學上網 ) 不懂的上網搜尋
  • 安裝插件。 參考 Vim 官方插件頁

參數選項功能

在Vim被啟動後,我們可以運作一些指令來激活一些選項參數。但是這些選項參數的配置在你退出Vim時會被忘記。如果你希望你所做的配置是永久性的,那麼需要在你的家目錄建立一個Vim的配置檔案:

.vimrc

以指令模式激活選項參數

激活選項參數:

:set 選項名

不激活選項參數:

:set no選項名

選項參數需要被指定值:

:set 選項名=數值

了解選項參數狀态,輸入:

:set 選項名?

在配置檔案中配置選項參數

目前在我們的使用者家目錄還沒有

.vimrc

( 注意前面有一點

.

,表示是隐藏檔案 ), 這個是 Vim 的配置檔案。但是在 /etc/vim 目錄中有一個檔案叫做

vimrc

( 注意前面沒有一點 . )。

把 /etc/vim 目錄下的

vimrc

拷貝到家目錄中, 重命名為

.vimrc

如下:

然後用 vim 打開:

  • syntax : 配置文法高量

首先激活 文法高亮 這個選項參數, Vim 支援很多種語言程式設計語言類型的檔案, 例如 C、C++、Python、Java、Ruby、Bash、Perl等等。要激活文法高亮隻需要保證:

注意修改了

.vimrc

這個配置檔案後, 需要儲存此檔案, 退出,在重新運作。
  • background : 背景色

設定背景色: 開啟黑色背景色選項

set background=dark
           
  • number : 顯示行号

Vim 中, 要在檔案中顯示行号 ( 行号在每一行的左邊 ), 需要:

  • showcmd : 顯示目前指令

Vim 中輸入指令時, 有時 ( 在互動模式下 ) 不能看到自己輸入的指令。那麼想要看到自己輸入的指令需要設定 :

set showcmd
           
  • ignorecase : 在查找忽略大小寫

Vim 預設情況下是區分大小寫的, 例如 搜尋 “mark” 的時候, 就搜不到 “MARK”、”Mark”等等,那麼在搜尋時忽略大小寫需要這樣設定 :

set ignorecase
           
  • mouse : 滑鼠支援

    激活滑鼠選項,即使在終端也可以使用滑鼠 隻要 :

網上也有很多高手配置的

.vimrc

, 可供下載下傳, 然後隻需稍加修改就可以成為自己的 Vim 配置了。