# 緣由

看到這篇你可能會懷疑為什麼 nvim 是寫在 windows 的分類裡面。
別問哪麼多,因為我是在 window 裡面裝的當然…。
對我來說 neovim 絕對比 vscode 香太多了,撇開套件非堂多之外。能用純鍵盤打字是吸引的。

# 什麼是 vim, 以及什麼是 neovim

vim 是款編輯器,對於普通的使用者來說有點類似 vscode, 但他是純命令控制的方式。
而 neovim 是基於 vim 的部分改進,而兩個是不同的作者在維護的。

具體可以看參考資料

# neovim 的安裝

  1. neovim 安裝

  2. 設定檔案。neovim 的精華在於它的設定檔案部分。
    在 windows 底下 neovim 的路徑在…

~/AppData/Local/nvim/init.vim
  1. 以下是我的設定檔案。
set number
let g:indent_guides_guide_size = 1
let g:indent_guides_start_level = 2
syntax on
set background=dark
"tab-settings
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
"install
call plug#begin()
Plug 'lazywei/vim-doc-tw'
Plug 'Yggdroot/indentLine'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'preservim/nerdcommenter'
filetype plugin on
Plug 'luochen1990/rainbow'
Plug 'preservim/nerdtree'
Plug 'honza/vim-snippets'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
call plug#end()
" 代碼補全
function! CheckBackspace() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction
inoremap <silent><expr> <Tab>
      \ coc#pum#visible() ? coc#pum#next(1) :
      \ CheckBackspace() ? "\<Tab>" :
      \ coc#refresh()
"markdown
nmap <C-s> <Plug>MarkdownPreview
nmap <M-s> <Plug>MarkdownPreviewStop
nmap <C-p> <Plug>MarkdownPreviewToggle
let g:mkdp_auto_start = 0
"
let g:NERDCreateDefaultMappings = 1
let g:NERDSpaceDelims           = 1
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }
" NERDtree
autocmd vimenter * NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif

這裡就不解釋具體含意。但如果要安裝套件時,必須先存檔或離開檔案,再次進入後要輸入 :PlugInstall , 等待安裝完成就可以開始設定了。

# 參考資料