iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

純‧CLI 整合開發環境--續章系列 第 10

Day 10:新手殺,誰來教我離開 vim 阿~~

前面 9 天都在介紹操作環境,今天終於要進到編輯器啦!我選用的編輯器是 nvim,但是如果你要用 vim 8 也是可以,因為這兩者之間幾乎沒什麼差別,只是你要注意這兩者的設定檔位置不同,目錄需要你自己轉換。唯一不同的點大概是 nvim 內建支援用 lua(一種程式語言)寫外掛,vim 8 只能用 vimscript。關於兩者之間的愛恨情仇請參考這裡,他講的非常詳細

接下來的文章可能會出現 vim、nvim 混用,但是他們都是指 neovim,也就是我們用的這個編輯器,不用特別跑去裝兩套軟體

安裝 nvim

基本上你的電腦的套件管理器裡面應該都有 nvim 了,但是他的名字可能不是 nvim,例如 apt 就是 neovim,如果你的套件管理器沒有收錄 nvim 或是你不知道該怎麼辦的話,可以看看這個文章 幾乎所有作業系統他都有介紹怎麼安裝了,當然他也有教你如何自己 build

操作

vim 的前身—— vi 誕生於幾乎沒有圖形化界面的時候,那時候也沒有滑鼠,所以所有的操作都必須在鍵盤上達成,今天就來認識一些簡單的命令吧!

離開 vim

為什麼要在還沒進入 vim 之前就教如何離開呢? 因為幾乎所有初學者都會有這個疑問,要怎麼離開 vim 啦!! 這邊我提供一個必勝的方法,不論你在 vim 做了什麼操作,ESC 狂按個 100 次三到四次,然後輸入 :q!ENTER 就會離開了。

命令模式?編輯模式?

vim 的「模式」也是讓初學者很困擾的東西之一,下面用一張圖來解釋他們的關係

vim mode
vim 模式切換 (From: 高見龍——超簡明 Vim 操作介紹)

通常 Normal Mode 中文是 「命令模式」,顧名思義這個模式下你可以打命令,Insert Mode 的中文是 「編輯模式」 ,在這個模式你可以編輯你的檔案。

從命令模式切回編輯模式的命令不只 iao 這三個,還有很多,但這是最常見的三個,其他的會在之後介紹

命令

注意:我的用詞可能和你看到其他文章不太一樣,這裡我的「命令」指的是 vim 中冒號開頭的命令,其他的則被我歸類到「快捷鍵」但是其實對 vim 來說他們都是命令(文件中都是 command )

如果你想打某個 vim 命令,例如說「儲存並離開」,你需要先到 「命令模式」 ,然後按下 :,螢幕下面就會有 一行空行 ,你可以在這裡打命令,也可按上、下 瀏覽以前打過的命令。常用的命令有儲存、離開、搜尋與取代、開啟檔案等等,這裡我列出幾個和檔案操作有關的命令

命令 說明
:w [filename] 儲存
:q 離開
:q! 強制離開不儲存(如果有更動檔案但只用 :q 的話會跳出錯誤訊息)
:wq 儲存並離開
:e [filename] 開啟某個檔案
:{number} 跳掉第幾行
:! {cmd} 執行 shell 命令

注意第三個和最後一個,雖然都有驚嘆號,但是第三個的驚嘆號在最後面,執行 shell 命令的驚嘆號在最前面。第三個的驚嘆號表示 「強制」「忽略警告」 ,搭配其他命令可以達到以下效果

命令 說明
:w [filename] 強制存檔,有時候會遇到檔案在開啟 vim 途中被其他程式修改或是權限問題,用 :w! 可以強制覆蓋
:e [filename] 不管現在這個檔案有沒有修改,直接從硬碟載入另一個檔案

快捷鍵

和 tmux 一樣,vim 也可以把某個按鍵對應到命令,這樣就不用常常打一堆指令了。
要注意,vim 可以指定快捷鍵生效的模式,所以如果在編輯模式不能用,那可能要切換到指令模式。
以下的快捷鍵都是在命令模式下用的喔,常用的快捷鍵有

快捷鍵 說明
yy 複製一行
dd 剪下一行
x 剪下一個字
p 貼上剪貼簿的內容
v 選取(之後可以複製、剪下)
. 重複執行剛剛執行過的指令
u 回復( undo )
<C-r> 重做( redo,重做 undo 取消的操作,也就是說要先 u 之後才能 r )
分隔線 接下來的快捷鍵看看就好,你可以用方向鍵解決
h 左移
j 下移
k 上移
l 右移
gg 移至檔案開頭
G 移至檔案結尾
^ 移至行頭
$ 移至行尾

<C-r> 的意思是 CTRL+r,這是 vim 常見的表示法,以後還會看到

結尾

vim 的命令(快捷鍵)其實是個非常高深的學問,我的文章可能沒辦法講的非常詳細,你可以去找其他教學,或是在 vim 中用指令 :help 看官方的教學


上一篇
Day 09:今天又想不出標題了!tmux plugin 和 mouse mode
下一篇
Day 11:批次修改!!
系列文
純‧CLI 整合開發環境--續章16

尚未有邦友留言

立即登入留言