設定 vimrc 讓 Mac 內建的 Vim 更美觀好用

工欲善其事,必先利其器。Vim 號稱是 Linux 與 MacOS 內建的最強文字編輯器,但我第一次用時想要輸入文字卻發現只有游標在動來動去 XD 直到最近認真開始學才發現 Vim 的美好,以及其「偷懶」的地方。從 Sublime Text、到現在的愛用 VS Code,使用上其實有一個問題,就是手常常要離開鍵盤去摸觸控板、或者移動滑鼠,Macbook 觸控板相當好用是還好,但如果在 Windows 上這件事就變得非常麻煩(到底有多懶)。沒錯,於是編輯器之神 Vim 來了!

不過預設的 Vim 實在不怎麼美觀,所以今天就先來讓 Vim 變得賞心悅目吧!

 

配色主題

打 Code 要有個好心情,就要先來搭配個自己喜歡的 Syntax Highlighting 配色。自己很喜歡 Spacegray,他有 Sublime Text 版 也有 VS Code 版,不意外也可以找到 Vim 版的(都是從 base16 theme 改的),Windows 版的 gvim 我也有裝沒有問題,但是(人生就是這個但是)不知道為什麼設定在 Mac 內建的 Terminal 裡看起來就是不一樣啊!網路上找的到的如下兩種解法,我試過了也沒有用。

# In Terminal.app
export TERM=xterm-256color

# In ~/.vimrc
set t_Co=256 "t_Co means terminal color

有人是改下載 MacVim,但我不想要下載多餘的東西,最後決定從支援 Terminal 的主題下手自己改,終於!

我把這個版本放上  Github 了,有需要可以自行取用。

 

基本介面設定

進入vimrc檔案

$ vim ~/.vim/vimrc

然後選擇性的加入設定。

syntax on
set background=dark
set tabstop=4 softtabstop=4 shiftwidth=4
set guifont=Fira\ Code:h12
set lines=50 columns=135
set scrolloff=10
set list listchars=tab:\:\ ,trail:·,extends:?,precedes:?,nbsp:×

set ai
set nowrap
set number
set ruler
set hlsearch
set cursorline

syntax on 啟用 Syntax Highlighting 配色功能。
set background=dark 設定暗色背景(有些配色主題需要此設定)。
set tabstop=4 softtabstop=4 shiftwidth=4 把縮排跟 Tab 鍵預設的 8 格空白大小改成 4 格。
set guifont=Fira\ Code:h12 把預設的字體改成 Fira Code,字級大小 12。但這在 Mac 上沒有用,請直接從 Terminal 偏好設定中修改顯示字體。
set lines=50 columns=135 設定 Vim 打開時的預設視窗大小。
set scrolloff=10 設定游標能移動到的最上方或最下方離視窗邊界的行數(若非頁首或頁尾)。
set list listchars=tab:\:\ ,trail:·,extends:»,precedes:«,nbsp:× 設定縮排的顯示符號,效果類似 Indent Guide,算是免外掛的解決方法,注意 tab 後面第二個反斜線緊接著一個空白。
set ai 設定換行時自動縮排。
set nowrap 設定單行文字不隨視窗大小折行。
set number 設定顯示行數。
set ruler 設定右下角顯示游標所在行數及字元數。
set hlsearch 設定反白顯示所有符合的搜尋字詞,欲取消可以在一般模式下輸入 :set noh,或者 :let @/=""
set cursorline 設定反白顯示目前游標所在的行。

在一般模式下輸入 :wq 存檔離開。

 

Remap Keybinding Issue

如果發現特殊鍵的 Remap 沒有效,例如方向鍵:

noremap <silent> <C-Up>    :resize +3<CR>
noremap <silent> <C-Down>  :resize -3<CR>

可以試著開啟終端機的設定、描述檔、鍵盤,依照此網站內容加入前面失效的快捷鍵組合,就可以解決問題。

 

Vim 入門

Vim 操作

這幾個網站寫的很清楚,很容易入門。

  1. 大家來學VIM
  2. Vim 文字編輯器教學和常用按鍵與指令表
  3. VIM学习笔记 by yyq123

或者可以看這份官方文件,建議了解 Vim 基本操作邏輯後再來看,裡面有不同模式下的所有支援指令。