經過一些有趣的小技巧使你的文本編輯器更上一層樓。php
Vim 是最受歡迎的文本編輯器之一,所以絕對值得你花時間去學習如何使用它。就算你只是學習使用這個無處不在的 Vi(m) 命令行文本編輯器打開文件、輸入和編輯一些文本、保存編輯的文件並退出程序,你都會受益不淺。html
你會發現,使用 Vim 很是方便的的場景幾乎老是涉及到運行遠程 Shell 操做的任務。若是你時不時地使用 ssh,好比node
$ ssh user@hostname.provider.com
複製代碼
並在虛擬專用服務器(VPS)或本地虛擬化容器中工做,那麼就能夠從這些強大的 Vim 技能中受益不淺。linux
幾乎全部的現代 Linux(或 BSD)發行版中,均可以在終端仿真器的 shell 命令提示符下使用 Vim。一旦在你的用戶 shell 程序中將 Vim 定義爲默認編輯器後,那麼就可使用熟悉的 Vim 鍵綁定來在內置的實用程序(例如 man
)中導航。我將說明如何使用 Bash 和 Z shell(zsh)來實現此目的,zsh 如今是 macOS 用戶的默認 shell(自 Catalina 起)。git
Bash 經過點文件的組合來管理設置。最多見的的作法將你的編輯器添加到主目錄中的 .bashrc
文件中,但也能夠將其添加到 .bash_profile
中。(請閱讀 GNU Bash 文檔瞭解二者的不一樣之處)。github
經過在 ~/.bashrc
中添加如下內容,將 Vim 設置爲默認編輯器:shell
# set default editor to Vim
export EDITOR=vim
複製代碼
以 #
開頭的行是可選的註釋,這是一個好方法,能夠提醒本身該命令的做用。vim
zsh 是一種愈來愈流行的終端仿真器,尤爲是在蘋果公司的基於 FreeBSD 的 Darwin 系統最近從 Bash 轉向 zsh 以來。bash
zsh 點文件與 Bash 的文件至關,所以你能夠在 ~/.zshrc
或 ~/.zprofile
之間進行選擇。有關什麼時候使用哪個的詳細信息,請參見 zsh文檔。服務器
將其設置爲默認:
# set default editor to Vim
export EDITOR=vim
複製代碼
Vim 像是終端仿真器 shell 同樣,也使用點文件來設置我的偏好。若是你發現了這種模式,則可能已經猜到它是 ~/.vimrc
。
你可能要更改的第一個設置是將對傳統的 Vi 兼容模式切換爲「關閉」。因爲 Vim 是 Vi 的超集,所以 Vi 中的全部功能在 Vim 中都是可用的,而且在 Vim 中獲得了很大的改進,你能夠得到許多高級功能。最新版本(8.2)容許你在分割的窗口中以子進程 shell 的方式打開一個終端。
順便說一句,明確關閉對傳統的 Vi 的兼容性看起來沒有什麼做用(事實上,可能並無什麼做用)。當 Vim 遇到 .vimrc
文件時,它會暗暗地自動將兼容模式切換到關閉。但有時將其明確關閉仍然很重要。縮寫 nocp
是 nocompatible
的同義詞,做用是同樣的。條條大道通羅馬,切換首選項有不少方式。
在 .vimrc
語法中, 以 "
開頭的行是註釋(就像 .bashrc
文件中的 #
同樣),這些註釋能夠幫助你記住諸如爲什麼選擇了一個隱晦的設置名稱之類的內容。
要關閉 Vi 兼容性,請將如下內容添加到 ~/.vimrc
文件中:
" ensure that legacy compatibility mode is off " documentation: <http://vimdoc.sourceforge.net/htmldoc/options.html\#'compatible>'
set nocp
複製代碼
Vim 的 「模式」概念是很是重要的,尤爲是「普通模式」和「插入模式」之間的區別。對模式的混淆是大多數新用戶的困擾。模式並非 Vim 所獨有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以致於它比 70 年代發明的複製和粘貼功能還要早。
Vim 依賴於不一樣的模式來定義鍵盤的敲擊行爲。須要瞭解的重要模式有:
每種模式都有不少值得探索的地方。使用 Vimtutor(vimtutor
)能夠交互式地學習移動光標、模式和在末行模式下運行 Ex 命令。一些不可缺乏的生產力操做符包括:
操做符 | 說明 |
---|---|
:E |
打開資源管理器,用於定位文件和目錄。 |
. |
重複上次的編輯操做。 |
; |
向前重複上一次的動做或移動 |
, |
向後重複上一次的動做或移動。 |
/ |
向前搜索文檔。 |
? |
向後搜索文檔。 |
* |
查找光標所在處的單詞的下一個出現的地方。 |
# |
查找光標所在處的單詞的上一次出現的地方。 |
~ |
切換大小寫。 |
% |
在 () 、[] 和 {} 的開閉符號之間切換;對編碼很是有用。 |
z= |
提出拼寫建議。 |
儘管把 Vim 的操做符「語言」記在記憶中是很重要的,但要想掌握它,難點在於學會像音樂家同樣思考,把操做符和動做組合成「和絃」,這樣你就能夠像彈鋼琴同樣彈奏 Vim。這就是 Vim 的文本操做能力能夠與另外一個著名的命令行編輯器 Emacs 相媲美的地方。(雖然其中一個編輯器會讓磨損掉你的 Esc
鍵,而另外一個編輯器會讓你的 Ctrl
鍵磨損掉。)
在描述鍵「和絃」時,Vim 中的傳統作法是用大寫字母 C 後面加上一個連字符(C-
)來指代 Ctrl
鍵。這並非通用的,但我將從這裏開始遵循這一慣例,並在有可能引發混淆的時候加以說明。
若是你在 Vim 中鍵入長行,你會想把它設置成能夠換行。想要根據你的工做方式對 Vim 進行個性化設置,請考慮一下這個設置:默認狀況下,你但願 Vim 啓動時如何處理文本換行?開仍是關?我喜歡將其關閉,並將其留在運行命令文件以外。當我想讓文本自動換行時,我只需在命令行模式下用 :set wrap
設置便可。
讓 Vim 設置爲默認狀況下自動換行並無錯,這只是一個偏好問題 —— 它可能隨着時間的推移而改變。一樣你也能夠控制粘貼、代碼語言縮進語法和 Tab
鍵的設置(製表符仍是空格?多少個空格?可也在這裏深刻研究這些選項)。全部這些默認行爲的選項都是徹底可配置和可更改的,而且在你使用命令行模式操做時能夠實時更改。
你會在社區論壇、Vim 維基和文章(好比這篇文章)中找到不少關於設置 Vim 默認設置的建議。你應該很熟悉爲你的我的計算環境設置首選項,Vim 也不例外。我強烈建議你從對設置進行很小的更改開始,慢慢地進行其它更改,以便你能夠輕鬆地恢復設置。這樣一來,你就能夠好多年避免使用插件或徹底不用插件。
有兩種方法能夠將你正在處理的文件分割成不一樣的視圖:它們能夠並排顯示,也可使用應用程序標籤頁在全屏(窗口)中切換。這些對應用程序窗口的更改是從命令模式啓動的,這須要使用冒號(:
)來調起提示符。
每一個分割的窗口能夠容納一個文件進行編輯,你能夠經過標籤頁在更多的文件之間隨意切換。分割的屏幕空間有限,因此當你想分割更多的屏幕時,標籤頁是很方便的。想要如何設置,純屬我的喜愛的問題。要水平分割一個窗口,使用 :sp
,垂直分割時使用 :vs
。
從 Vim 8.2 開始,你能夠用 :vert term
打開一個垂直分割的終端 shell 子進程,以在你的代碼旁邊的命令行上進行操做。你須要鍵入 exit
來關閉你的終端進程,就像你結束一個 shell 會話同樣,但你關閉這個分割的窗口和標籤頁的方式和關閉任何普通的 Vim 窗口同樣,要用 :q
來關閉。
要初始化一個標籤頁,請使用一個特殊的編輯命令::tabedit
,它會自動切換到新打開的標籤頁。若是你給該命令一個文件名做爲參數,會打開該文件並進行編輯。若是你忽略了給它一個文件名做爲參數,能夠在命令行模式下的使用編輯命令 :e filename.txt
,就像在任何一個普通的 Vim 窗口中同樣。可使用下一個(:tabn
)和上一個(:tabp
)命令在標籤頁間導航。
要使用分割,你須要知道如何使用組合鍵 C-w
和你想要移動的方向的移動鍵,例如左(h
)、下(j
)、左(k
)、右(l
)。若是你想學習更多的組合鍵,請閱讀 Vim 手冊中的 :help split
和 :help tabpage
。
雖然能夠在 Vimtutor 中打開參考 Vim 手冊,但用 :help
打開 Vim 幫助,可讓你本身把時間花在編輯器上,不用徹底依賴像這樣的文章,就能得到更多的成果。經驗是掌握 Vim 的關鍵。經驗有助於提升你的總體計算直覺,由於 Vim 中的不少東西都是從 Unix 宇宙中汲取的。
祝你在探索 Vim 之美的過程當中玩得開心,有什麼問題能夠在評論中分享。
via: opensource.com/article/20/…
做者:Detlef Johnson 選題:lujun9972 譯者:wxy 校對:wxy