vim入門實戰

2023-03-05 18:00:29

一入程式設計深似海,從此節操是路人。

前段時間由於業務場景需求,不得不近一步學習 vim 使用方法,提高工作效率,就總結了一些常用快捷鍵使用方法。滿足一般需求,掌握基本增、刪、改、查就可以了,近一步學習可以瞭解多屏操作和宏的使用以及自定義外掛功能。

Linux發行版伺服器基本上是已經設定好 vi 或者 vim,可以使用進行練習,也可以下載vim使用者端(支援多個平臺:Linux、macOS、Windows)軟體進行練習,當然還使用git bash一樣可以進行練習。目前主流IDE工具,基本上是支援安裝vim外掛,開啟外掛支援vim相關功能。例如:VSCode、IntelliJ IDEA(社群版與旗艦版均支援)。

展示一下Windows平臺下的vim以及gvim:

vim:在字元介面進行使用,可以看到初次進入會顯示版本資訊、維護人以及一些幫助命令。

GVIM:其實是GUI VIM,帶有圖形操作介面,便於桌面使用者端使用。

VSCode使用vim外掛,簡單介紹一下

ctrl + shift + p:快速掉出命令列工具,鍵入vim找到Toggle Vim Mode

shell或者其它terminal快速糾錯

掌握常用快捷鍵提高日常工作效率,某些快捷鍵並不適用Windows terminal。

  • ctrl + h :刪除上一個字元,ctrl + w:刪除上一個單詞,ctrl + u: 刪除一整行;
  • ctrl + a:跳到行首,在Windows terminal是全選;ctrl + e:跳到行末,不適用Windows terminal;
  • ctrl + b:前移,不適用Windows terminal;ctrl + f:後移,不適用Windows terminal。

tips:Windows terminal快速跳轉,使用ctrl + 左右方向鍵進行跳轉。

vim入門實戰

vim官網:https://www.vim.org/

開源倉庫:https://github.com/vim/vim

外掛查詢:https://vimawesome.com/

使用VimAwesome檢索自己需要的外掛,基本上每個外掛列出了源地址。通常個人習慣從github上克隆,比較方便。

唯有多練才能熟練,善用自帶幫助檔案,如下列舉最基本幫助檔案以及分屏操作獲取方式。
注意:使用格式為英文輸入法下的冒號加上help,使用命令亦是如此。

:help
:help vs
:help sp

插入(編輯)模式:a i o。插入模式姿勢也很多啊,標準姿勢 i ,高難度姿勢 a、o。

  • a:節奏插,在當前字元遊標前一個字元插入

  • i:慢插,當前遊標位置插入。

  • o:快插,快速在前一行下方插入一行空白行

快速終止(進入插入模式),等價於ESC退出編輯模式進入normal模式

  • ctrl + [

  • ctrl + c

養成使用 hjkl 按鍵替代方向鍵進行上下左右移動,提高操作效率。

vim快速移動

normal模式

快速移動:按住快捷鍵 h j k l

  • h:左移
  • j:下移
  • k:上移
  • l:右移

單詞切換

  • w\W
  • b\B
  • e

搜尋移動(行間)

  • f\F:按住f輸入單詞,使用逗號(,),分號(;)切換單詞。
  • t:轉到輸入字元前一個字元上。

水平移動

  • 0:移動到行首第一個字元
  • ^:移動到第一個非空白字元
  • $:移動到行尾,g_ 移動到非空白行尾

頁面快速移動

  • ctrl + u: 上翻頁,等同於shift + 方向鍵上鍵
  • ctrl + f: 下翻頁,等同於shift + 方向鍵下鍵
  • gg :快速回到頁面頂部。
  • G & shift +g:移動到頁面末尾

更多用法,可以參考

:help g

vim增刪改查

vi:選擇多個字元,等同於shift + v:選擇當前行,使用G選擇餘下行。

normal模式下使用

刪除

  • x:快速刪除一個字元
  • d(delete):配合文字物件快速刪除一個單詞:dw;快速刪除一行:dd
  • d和x:配合數位執行多次

新增

  • 插入資料(a i o)

修改

  • r\R(replace):以...替代,替代當前字元,R:替代後續字元
  • c(change):改變,cc:刪除當前行,cw(ciw、caw):刪除當前單詞並修改
  • s\S(substitute):替代,刪除當前字元並進行插入,可以在normal模式替代插入模式;S:刪除整行

恢復

  • u:恢復到之前的狀態,刪掉插入內容。

搜尋替換

  • s\S(substitute),可以配合正規表示式替換
  • 替換位標誌:g(global),c(confirm),n(number)
  • :% s/word/w/g:全域性替換
  • :% s/\<word\>/w/g:精確匹配單詞後替換

vim多屏操作

normal模式

多檔案操作,準備多個檔案用於測試

預先準備多個測試檔案,使用vim或者touch命令都行

vim test_a.txt

this is test_a file
# test a

複製多個檔案用於測試:

cp test_a.txt test_b.txt;cp test_a.txt test_c.txt

開始測試,依次輸入如下命令:

  • :e test_a.txt,:e test_b.txt,:e test_c.txt
  • :ls
  • :bprevious

使用 :e 進入編輯模式,不退出當前對談同時編輯多個檔案,:ls 檢視當前對談快取檔案,:bprevious 檢視之前編輯過的檔案。

多屏操作

  • :vs:水平分割
  • :sp:垂直分割
  • ctrl + w :移動視窗,配合大寫L和hjkl操作

水平分割效果展示

垂直分割效果展示

更多用法,參考幫助檔案

:help vs
:help sp

多個分頁

  • :tabnew :開啟新的分頁
  • :tabnext:切換分頁
    還可以使用快捷鍵 gt 快速切換分頁,同樣可以使用簡化寫法 :tabn 切換分頁。

更多用法,參考幫助檔案

:help tabnew
:help tabnext

複製貼上

  • normal下使用y(yank)複製,p(put)貼上
  • yy:複製一行
  • yiw:複製一個單詞
  • x刪除,p貼上。

範例:如果複製一大段內容,可以結合快捷鍵shift + v 配合 y複製,使用 p 貼上內容。

開啟了多個分屏或者分頁,如何一次性關閉?使用 :qa 命令關閉全部,返回當前終端。

vim進階

normal模式

vim宏

  • 按住 q 鍵錄製類容,配合使用命令qa
  • 快速選擇餘下所有行:shift + v G
  • 進入普通模式輸入::normal @a

常用補全

  • ctrl + n 和 ctrl + p 補全單詞
  • ctrl + x 和 ctrl + f 補全檔名
  • ctrl + x 和 ctrl + o 補全程式碼

補全如果沒生效,需要設定相應的外掛。

使用vim相關外掛,修改配色方案

以Java類為範例進行說明,編輯Java程式碼Hello world

vim Hello.java

class Hello{
        public static void main(String args[]){
                System.out.println("Hello cangls");
        }
}

克隆hybrid配色方案

git clone https://github.com/w0ng/vim-hybrid.git

建立文鍵目錄

mkdir -p .vim/colors

複製hybrid.vim到.vim/colors目錄中

cp vim-hybrid/colors/hybrid.vim  .vim/colors

編輯配色方案

vim Hello.java
:colorscheme hybrid

修改配色方案永久生效,設定background=dark為暗色系,預設為light淺色系,預設設定顯示行號set number

vim .vimrc

set background=dark
colorscheme hybrid
set number

恢復預設配色

:colorscheme default

vim外掛

初次使用,外掛不在多,在於對你的操作有所提升。可以一步步嘗試安裝外掛,對比哪些對你的日常工作有幫助。

  • vim-plug:用於管理外掛。
  • NERDTree:用於增強目錄樹外掛。
  • TarBag:用於顯示標籤外掛(需要ctags支撐,Windows平臺將ctags.exe檔案置於vim根目錄同級即可使用)
    例如:個人解壓後vim路徑:D:\gvim_9.0.1075_x64\vim90\,將ctags.exe放入vim90目錄即可。

如果當前使用者根目錄沒有.vimrc 檔案,則新增。

Windows平臺需要在當前使用者新增 .vimrc 檔案。

vim ~\.vimrc

Linux平臺一樣需要新增 .vimrc

vim ~/.vimrc

加入如下內容即可安裝外掛:

set number
call plug#begin()
  Plug 'preservim/nerdtree'
  Plug 'preservim/tagbar'
call plug#end()

外掛安裝命令:

:PlugInstall

外掛安裝後,重啟vim即可生效。

安裝外掛效果展示,最左側是nerdtree效果,最右側是tagbar效果。

vim無處不在

vim與Tmux可以在Linux伺服器上安裝tmux配合vim使用,效果更加。

Linux發行版(centos9-stream)安裝tmux

[root@Centos9-Stream ~]# yum list | grep tmuxtmux.x86_64                                          3.2a-4.el9                         baseos[root@Centos9-Stream ~]# yum -y install tmux[root@Centos9-Stream ~]# rpm -qa | grep tmuxtmux-3.2a-4.el9.x86_64

安裝後初步使用:

[root@Centos9-Stream ~]# tmux ls0: 1 windows (created Sun Feb 26 15:42:19 2023) (attached)

預設進入tmux,使用tab鍵可以提示相關命令,使用exit退出tmux。

IDE與vim

  • VSCode(Visual Studio Code)
  • STS4(Spring Tool Suite4)
  • IDEA(IntelliJ IDEA)

文初演示了VSCode使用vim外掛,此處展示一下STS4使用vim外掛:

01、STS4啟動介面

02、頂部選單欄找到help,開啟Eclipse Marketplace

03、搜尋vim並安裝

04、重啟開發工具STS4,初始化介面效果

vim與neovim
與時俱進,競爭產出新特性。
https://github.com/neovim/neovim

站在巨人的肩膀上,打造炫酷的vim
SpaceVim:https://github.com/SpaceVim/SpaceVim

個人收藏一些vim相關外掛倉庫地址:https://github.com/stars/cnwangk/lists/vim

你還可以通過 vimawesome 尋找vim外掛:https://vimawesome.com