shayne's blog

Vim 基本設置 – 基本設定檔 (2)

2018/04/24 Share

安裝完Neovim後,接著建立config檔以及進行一些設定。

我的完整設定檔在此,本文主要針對Vim原本的一些設定(大約在50-111行)快速導覽,其餘部分在後面提到插件(plugin)時會再提到。


產生設定檔

1
2
3
cd ~/.config
mkdir nvim && cd nvim
touch init.vim #建立設定檔

不同於Vim的~/.vimrc,Neovim的設定檔是放在~/.config/nvim/init.vim


設定項目

Vim的設定項目非常多,這邊會快速導覽我有設定的一些主要或特殊的項目,還有很多東西我沒去設定。基本上,把基本的項目設定好就可以開始用了,其他項目可視使用上的需求,再google查詢慢慢添加。設定時我會盡量加一些註解,因為實在太多了不好記XD

<Leader>與<Esc> remapping

1
2
let mapleader = ","    "改變<leader> 預設是'\'
imap jj <Esc>

這一步可以跳過去,<Leader>其實就是個按鍵,用於設定一些指令的快捷鍵,我習慣將它改為逗號,按起來比較方便。此外,每次要回到Normal mode都必須按<Esc>,我將其額外綁定,在insert mode模式下連續按兩次j也可發揮相同作用。

折行(wrap)相關

1
2
3
4
5
6
set wrap   " 字數過長時換行。
set linebreak " wrap but prevent linebreak
nnoremap <expr> k (v:count == 0 ? 'gk' : 'k')
nnoremap <expr> j (v:count == 0 ? 'gj' : 'j')
nnoremap <expr> <Up> (v:count == 0 ? 'gk' : 'k')
nnoremap <expr> <Down> (v:count == 0 ? 'gj' : 'j')

在這邊設定每一行文字過長時,會自動折下來而不是持續向右邊延伸。set wrap搭配set linebreak可避免一些比較醜的折行(例如英文單字被折兩半)。
需注意的是,儘管折行看起來變成多行,vim仍視為同一行,所以一按k,j或上下鍵移動會一次跳多個折行,導致編輯時不方便。可以看這篇的圖示會更清楚。為了解決此問題,將gkgj綁定原本的k,j及上下鍵,如此一來可自動在折行上下移動。

tab鍵設定

1
2
3
4
5
6
7
8
set list listchars=tab:»·,trail:·
nnoremap <Tab> >>
nnoremap <S-Tab> <<
inoremap <S-Tab> <C-d>
set tabstop=4
set shiftwidth=4
set shiftround
set expandtab

此區主要設定了:

  1. 使用tab時會顯示"·"指出有幾個空格
  2. 設定normal mode也能用tab及shift+tab
  3. 設定insert mode的shift+tab有退後功能
  4. 設定tab鍵等效於space鍵的特定格數

顯示相對行號

1
2
set number  " 顯示行號
set relativenumber "設定相對行號

這邊特別提出這項設定,在Vim裡面設定相對行號好處非常多,它可以讓我們快速看出往上或往下多少可以到達某一行。例如我想要往上移動到某行,假設相對行號顯示20,則按下20k可以快速移動到該行。此外,假設我想要選取我現在這行到某行,也可以直接用相對行數看出要選多少行,例如我想要選這行到下面15行,則先按大寫Vshift+v選擇此行,接著按下15j,則可把這段落選取起來。

Buffer與Tabline

1
2
3
4
nnoremap <F5> :bp<cr>
nnoremap <F6> :bn<cr>
nnoremap <leader>bd :bd<cr>
nnoremap tn :tabnew<CR>

在Vim中常用到buffer或tabline,這邊設定了F5可切換到前一個buffer、F6後一個,,bd為刪除某個buffer。至於tabline我這邊只設定新增,切換不同tab的話會配合airline插件使用。

主題相關設定

1
2
3
4
5
6
7
set t_Co=256
syntax on "語法上色
set laststatus=2 "永遠開啟status line
set termguicolors
set background=dark
colorscheme gruvbox
let g:gruvbox_italic=1

這邊設定Vim的主題,某些項目的設置是為了讓主題顏色可正確顯示。Vim有內建主題,但這邊gruvbox這個主題必須使用plugin安裝。

其他

其他設置還有游標、路徑、swap file等等,這邊沒有額外打出來,但在我的設定檔裡有盡量加上註解。如果之後使用遇到某些需求,都可以查詢google看看是否有那些設定選項。

下一篇將介紹Vim的插件(plugin)管理


附註

本篇文的這些設定,Vim與Neovim是完全互通的。

CATALOG
  1. 1. 產生設定檔
  2. 2. 設定項目
    1. 2.1. <Leader>與<Esc> remapping
    2. 2.2. 折行(wrap)相關
    3. 2.3. tab鍵設定
    4. 2.4. 顯示相對行號
    5. 2.5. Buffer與Tabline
    6. 2.6. 主題相關設定
    7. 2.7. 其他
  3. 3. 附註