Closed5

Ubuntu22.04(on WSL2)で、fish shell+neovimの環境構築しようとしたけど、フォントとパッケージ依存の関係で詰まった件

書生書生

環境:Windows11, Ubuntu22.04.1LTS on WSL2, Windows Terminal

環境構築の記事はネット上にあふれかえっているので、今回躓いた部分をまとめる。

書生書生

動機:fishの補完機能が魅力的だった。

ザックリとした流れ。

  1. 公式の手順に沿ってWSL2のインストール
    https://learn.microsoft.com/ja-jp/windows/wsl/install
    ターミナルはタブ管理が魅力的だったのでWindows Terminalを選択。

  2. neovimのインストール
    色々プラグインを入れたが、vim-airlineの設定でフォント問題が発生。いったん放置してfishのインストールに移る。
    coc.nvimの方でもパッケージ依存問題が発生。後述する。

  3. fishのインストール
    ここでまたフォント問題が発生。
    結果として、neovimの方の問題も同時に解決することが出来た。

書生書生

2. neovimのインストール

以下は私のinit.vim

~/.config/nvim/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

が原因で起こるらしい。とりあえずこの部分をコメントアウトすることでエディタは使用できたが、推奨フォントを使ってないためかいまいちカッコよくない。

解決策:

https://www.nerdfonts.com/font-downloads
ここからFiraCode Nerd fontのダウンロードしてmediumをインストールした。(Nerd fontならどれでも大丈夫)
あとはWindows Terminalの設定から、プルダウン>設定>ubuntu-22.04.1 LTS > 外観>フォントフェイスからFiraCode NFMを選択すればよい。

ちなみにCoc.nvimに関してはnodejsのパッケージが必要だったっぽいのでインストールしてすぐに解決した。

書生書生

3. fishのインストール

その辺の記事に従って行った。
プロンプトにstarshipを採用したが、文字化けが発生した。調べてみるとNerd fontが必要らしく、指示に従ってインストールしたらneovimの方の問題も解決できた。

このスクラップは2022/11/02にクローズされました