Ubuntu22.04(on WSL2)で、fish shell+neovimの環境構築しようとしたけど、フォントとパッケージ依存の関係で詰まった件
環境:Windows11, Ubuntu22.04.1LTS on WSL2, Windows Terminal
環境構築の記事はネット上にあふれかえっているので、今回躓いた部分をまとめる。
動機:fishの補完機能が魅力的だった。
ザックリとした流れ。
-
公式の手順に沿ってWSL2のインストール
https://learn.microsoft.com/ja-jp/windows/wsl/install
ターミナルはタブ管理が魅力的だったのでWindows Terminalを選択。 -
neovimのインストール
色々プラグインを入れたが、vim-airlineの設定でフォント問題が発生。いったん放置してfishのインストールに移る。
coc.nvimの方でもパッケージ依存問題が発生。後述する。 -
fishのインストール
ここでまたフォント問題が発生。
結果として、neovimの方の問題も同時に解決することが出来た。
2. neovimのインストール
以下は私のinit.vim
set encoding=utf8
set tabstop=2
set shiftwidth=2
" mapping
inoremap jj <Esc>
" terminal mode mapping
tnoremap jj <C-\><C-n>
" Open Terminal below the current window
command! -nargs=* T split | wincmd j | resize 20 | terminal <args>
" Always open Terminal in insert mode
autocmd TermOpen * startinsert
" vim-plug
call plug#begin('~/.config/nvim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'tpope/vim-commentary'
Plug 'ryanoasis/vim-devicons'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'mattn/vim-lsp-settings'
Plug 'prabirshrestha/vim-lsp'
call plug#end()
" NERDTree SETTINGS
nmap <C-f> :NERDTreeToggle<CR>
nmap <C-p> <Plug>AirlineSelectPrevTab
nmap <C-n> <Plug>AirlineSelectNextTab
" Airline SETTINGS
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme = 'dark'
let g:airline_deus_bg = 'dark'
let g:airline_powerline_fonts = 1
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction
" autocomplete
inoremap <silent><expr> <C-j> coc#pum#visible() ? coc#pum#next(1) : "\<C-j>"
inoremap <silent><expr> <C-k> coc#pum#visible() ? coc#pum#prev(1) : "\<C-k>"
inoremap <silent><expr> <Enter> coc#pum#visible() ? coc#pum#confirm() : "\<Enter>"
inoremap <silent><expr> <Esc> coc#pum#visible() ? coc#pum#cancel() : "\<Esc>"
inoremap <silent><expr> <C-h> coc#pum#visible() ? coc#pum#cancel() : "\<C-h>"
" <Tab>で次、<S+Tab>で前
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1):
\ <SID>check_back_space() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<S-TAB>" " "\<C-h>"
inoremap <silent><expr> <c-space> coc#refresh()
Vimコマンドラインに:PlugInstallを打ち込んでプラグインをインストールするとairlineがぐちゃぐちゃに文字化けした。どうやらこれは、
let g:airline_powerline_fonts = 1
が原因で起こるらしい。とりあえずこの部分をコメントアウトすることでエディタは使用できたが、推奨フォントを使ってないためかいまいちカッコよくない。
解決策:
あとはWindows Terminalの設定から、プルダウン>設定>ubuntu-22.04.1 LTS > 外観>フォントフェイスからFiraCode NFMを選択すればよい。
ちなみにCoc.nvimに関してはnodejsのパッケージが必要だったっぽいのでインストールしてすぐに解決した。
3. fishのインストール
その辺の記事に従って行った。
プロンプトにstarshipを採用したが、文字化けが発生した。調べてみるとNerd fontが必要らしく、指示に従ってインストールしたらneovimの方の問題も解決できた。
完成系。airlineも先ほどのものとは見違えるくらいカッコよくなった。