簡潔地使用 vim
突然翻到大學期間寫的博文,重新在此釋出。
前言
本文以 Linux 作業系統為測試環境,並且要求對 vim 有些許瞭解,如果對 vim 完全沒有概念,建議在命令列下輸入 vimtutor 獲取 vim 的入門教程,花一個小時左右即可入門。
我對 vim 的定位
據我瞭解,在命令列時代,如果根據編輯器的使用給程式設計師分類,幾乎大致可以分為 vim 和 Emacs 兩大陣營。我在剛剛接觸文字編輯器的時候,也被灌輸著必須二選一的思想。誠如傳言,vim 確實很重要,只要接觸 Linux 而不使用 vim 是不可能的,而 Emacs 的組合命令讓我實在無法忍受,所以即使 Emacs 很強大,還沒開始學我就決定放棄它了。
在折騰 vim 很長時間之後,特別是接觸了 Atom、Sublime Text、VS code 等新興文字編輯器之後,我又得出了一個結論:vim 不適合這個時代。也許有很多高手和老駭客還在青睞 vim,他們已經把 vim 玩得很 6 了,甚至離不開 vim 了,但是我必須承認有很多更好用的編輯器,我不想再折騰這個老古董了。
但是 vim 是又是必須的,它是一個很好用的輔助工具,因為一旦我們熟悉了 vim 的使用,就可以在很多地方包括以上提到的新興編輯器使用,而 vim 也確實是一個高效的工作方式。我一直在使用 vim,在 Linux 下,我使用 vim 編輯小檔案,在瀏覽器端,我使用 vimuim 外掛支援 vim 快捷鍵,而我在使用新興編輯器的時候,我依然是使用 vim 的鍵盤快捷方式。高效的輔助工具,這是我對 vim 的定位。
這個定位也是我寫本文的原因。網上有很多 vim 的教程,但是講的都很仔細,我也看了一遍又一遍,但是到頭來,我發現我記住的還是那麼多,因為我只用那麼多。我想透過本文總結我在使用 vim 的時候用到的東西,而且是常用的、不會忘記的東西。
簡潔地使用 vim
跳轉
h 向左移動
k 向上移動
j 向下移動
l 向右移動
H 移動到螢幕的起始行
M 移動到螢幕中間
L 移動到螢幕的底行
gg 移動到文件首行
G 移動到文件尾行
NG N替換為數字,移動到文件的第N行
Ctrl + f 向下翻一頁
Ctrl + b 向上翻一頁
0 移動到行頭
$ 移動到行尾
搜尋匹配
普通匹配如下,在命令模式下,先輸入/,再輸入 str 即可匹配到字元 str,然後按 n 則匹配下一個 str,按 N 匹配上一個 str。而如果輸入的是?str,則 n 和 N 的功能相反,不管是/str 還是?str,在匹配到文始或者文末之後,都會從頭開始。
/str 向下搜尋匹配字元str
?str 向上搜尋匹配字元str
而想要更精確的匹配,就要用到正規表示式匹配,基本使用如下,正規表示式的高階語法請自行百度。
:/str/ 正規表示式匹配字元str
替換與刪除
r 替換單個字母
R 從當前字母開始替換
x 刪除一個字母
dw 刪除一個單詞
dd 刪除一行
d$ 從當前刪除到行末
d0 從當前刪除到行頭
J 刪除本行的回車符,將本行與下一行合併
插入
i 在當前游標前插入
a 在當前游標後插入
o 在本行的下面新建一行並進入編輯模式
O 在本行的上面新建一行並進入編輯模式
複製貼上
yy 複製本行
p 在游標後面貼上
P 在游標前面貼上
更常用的做法是,在命令模式下,先按 v 進入可視模式,利用上面講到的跳轉命令選擇文字,被選擇的文字背景會反白,選擇好要複製的文字後,按下 y 即可複製反白文字。
撤銷與重複
u 撤銷上一次操作,常用
. 恢復操作
開啟、儲存、退出
:w 儲存而不退出
:w filename 儲存副本
:q 退出vim
:q! 強制退出,不儲存
:wq 儲存並退出
:e path/file 在vim中開啟檔案
:f file 重新命名檔案
其他命令
:set nu 顯示行號
:syntax on 開啟語法高亮
:set option 命令常常用來設定 vim 的介面與相關配置,如上兩條配置命令只會臨時起作用,而退出 vim 之後就會失效,所以最好的做法是,在使用者主目錄下新建一個.vimrc 檔案,並把自己的配置選項寫入檔案中,這樣 vim 就知道如何初始化自己了。
:f 或者 Ctrl + G 顯示狀態列,這對於想看檔名很有用
:!cm 其中cm為shell命令,這允許我們在vim中執行shell命令
還有一些命令,我不常用,但是我認為可以瞭解,如下:
:sp 上下分屏
:vsp 左右分屏
Ctrl + w + h 切換到左邊屏
Ctrl + w + j 切換到下邊屏
Ctrl + w + k 切換到上邊屏
Ctrl + w + l 切換到右邊屏
其實 Ctrl + w 可以在不同的屏之間按順序切換。
總結
這是我對自己使用 vim 的總結,我認為對於 vim,我知道這些就夠了,希望對你們有所幫助,發現錯誤歡迎指正,有意見歡迎反饋。
相關文章
- 如何簡潔優雅地部署PostgreSQL和Pgweb?SQLWeb
- Git命令簡潔使用指南Git
- Flutter GetX使用---簡潔的魅力!Flutter
- RxAndroid使用初探;簡潔、優雅、高效Android
- 簡練VIM快捷鍵(儘量簡潔,刪去能組合實現的且不易記的)
- 史上最簡潔使用Tensorflow_model_serverServer
- 理解Python asyncio原理和簡潔使用方式Python
- R資料分析:如何簡潔高效地展示統計結果
- 簡潔Java之道Java
- vim使用
- Vim 使用
- 使用TS+Sequelize實現更簡潔的CRUD
- 使用 Laravel Eloquent 構造器讓模型更簡潔Laravel模型
- Vim簡明學習
- 使用AsyncAPI規範簡潔實現CQRS事件溯源案例API事件
- Vim-plug:極簡 Vim 外掛管理器
- JavaScript程式碼簡潔之道JavaScript
- yum安裝簡潔版
- JavaScript 程式碼簡潔之道JavaScript
- Pandas之:Pandas簡潔教程
- Lombok - 使用註解讓你的JavaBean變得更加簡潔LombokJavaBean
- Linux 和 vim使用Linux
- 如何高效使用Vim
- vim使用記錄
- Vim使用指南
- vim基礎使用
- vim使用雜記
- Vim 基本的使用
- JS高階技巧(簡潔版)JS
- Linux編輯器Vim簡介Linux
- 函數語言程式設計:如何高效簡潔地對資料查詢與變換函數程式設計
- 使用 Ruby 擴充 Vim
- Vi 和 Vim 的使用
- VIM 的使用方法
- Vim 使用指南提取
- 幾種簡潔建立執行緒的方式以及使用注意事項執行緒
- 使用 Macro 讓你的程式碼更簡潔,更具有可讀性Mac
- JavaScript常用的簡潔高階技巧JavaScript