経緯
Neovimの設定方法、エラーとの戦いを主に記しています。
そして、ただ今奮闘中であります。
- 書籍「実践Vim 思考のスピードで編集しよう!」のタイトルに惹かれ、
- まずはゴリゴリでモダンな環境を整えるところから始める
とりあえずURL貼っとく
実践Vim 思考のスピードで編集しよう! (amazon)
これまでやったことをまとめる。
すべてうまくいっているわけではない。
導入環境
2018/4/6 現在
- OS macOS Sierra 10.12.6
- neovim 0.2.2
ソースコードはここに https://github.com/KenziTajima/neovim
インストール
Neovim自体は初めて名前を聞いた時から興味本位でインストールはしていた。
だがしかし、どうやってインストールしたかよく覚えていないのでbrewでインストールしておく。
以下を参考にした。
neovimをインストールしてみました (Qiita)
dein.vimを導入
まずはこのプラグインから。
これは闇の力を宿したプラグインを管理するプラグイン。
インストールにはGitHubのREADMEを参考に以下の手順をこなす
URL: Shougo/dein.vim
以下のコマンドをターミナルで実行する。
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh {specify the installation directory}
注意: 2行目の "{}" もパス名に含める。(自分は一回引っかかった。)
installer.sh実行時に出てきた文字列を設定ファイル(init.vim)に追記する。
tomlファイルでプラグインを管理するためにinit.vimでファイルを指定する。
" dein.toml, dein_layz.tomlファイルのディレクトリをセットlets:toml_dir= expand('~/.config/nvim')" 起動時に読み込むプラグイン群call dein#load_toml(s:toml_dir.'/dein.toml',{'lazy':0})" 遅延読み込みしたいプラグイン群call dein#load_toml(s:toml_dir.'/dein_lazy.toml',{'lazy':1})
参考 dein.vimでプラグイン管理のはじめ方 (Qiita)
見た目を変える
導入したプラグイン
- テーマ joshdick/onedark.vim
- テーマ mhartington/oceanic-next
- status/tabline vim-airline/vim-airline
- statusline powerline/powerline
theme設定 (init.vimに記述)
colorscheme onedark
letg:airline_theme='oceanicnext'
airlineとpowerlineの違いって何だろう。(誰か教えてください)
以下設定
" パワーラインでかっこよく"let g:airline_powerline_fonts = 1" カラーテーマ指定してかっこよく"let g:airline_theme = 'badwolf'" タブバーをかっこよくletg:airline#extensions#tabline#enabled =1" 選択行列の表示をカスタム(デフォルトだと長くて横幅を圧迫するので最小限に)letg:airline_section_z= airline#section#create(['windowswap','%3p%% ','linenr',':%3v'])" virtulenvを認識しているか確認用に、現在activateされているvirtualenvを表示(vim-virtualenvの拡張)letg:airline#extensions#virtualenv#enabled =1" gitのHEADから変更した行の+-を非表示(vim-gitgutterの拡張)letg:airline#extensions#hunks#enabled =0" Lintツールによるエラー、警告を表示(ALEの拡張)letg:airline#extensions#ale#enabled =1letg:airline#extensions#ale#error_symbol ='E:'letg:airline#extensions#ale#warning_symbol ='W:'
参考元は忘れました。<(_ _)>
QuickRunを導入
tomlに記述してインストール。
[[plugins]]repo='thinca/vim-quickrun'
python周りでエラーが出たから対処する。
参考 Neovim の CheckHealth において Python 連携まわりで警告が出るときの対処
(Qiita)
それでもエラー
Failed to load python host. ...
と出たので
let g:python_host_prog=$PYENV_ROOT.'/versions/neovim-2/bin/python'
を
let g:python_host_prog=$PYENV_ROOT.'/versions/neovim-2/bin/python2.7'
に変更した。
<C-c>で強制終了させる。
参考 vim-quickrun シンプルかつまともに使える設定 (Qiita)
調べたら以下のようにinit.vimに記述したら好きなタイミングで終了できるらしい
nnoremap <expr><silent><C-c> quickrun#is_running() ? quickrun#sweep_sessions():"\<C-c>"
しかし以下のように表示されるのみ
Type :quit<Enter>toexit Nvim
ショートカットキーを変更するとただ反応しなくなった。
何故なのだろう。誰か教えてください。
vimprocを用いた非同期処理
参考は同上 vim-quickrun シンプルかつまともに使える設定 (Qiita)
まずはvimprocをインストール
(dein.toml)に以下のように記述する。
[[plugins]]repo='Shougo/vimproc.vim'build='make'
次にQuickRunの設定
以下のように(init.vim)に記述する。
letg:quickrun_config= get(g:,'quickrun_config',{})letg:quickrun_config._ ={ \'runner':'vimproc', \'runner/vimproc/updatetime':60, \'outputter':'error', \'outputter/error/success':'buffer', \'outputter/error/error':'quickfix', \'outputter/buffer/split':':rightbelow 8sp', \'outputter/buffer/close_on_empty':1, \}
結果
以下のようなエラーが出る。
[vimproc] vimproc's DLL: "/Users/local/.cache/dein/repos/github.com/Shougo/vimproc.vim/lib/vimproc_mac.so" is not found. Please read :help vimproc and make it.
Error detected while processing function quickrun#command[10]..quickrun#run[10]..303[10]..395:
line 1:
E117: Unknown function: vimproc#pgroup_open
E15: Invalid expression: vimproc#pgroup_open(join(a:commands, ' && '))
vimprocが正しくインストールされていないようなので以下のコマンドを実行する。
call dein#update()
しかし、vimprocはインストールされていない様子。
何故だろう。誰か教えてください。
まだ使っていないプラグイン
- deoplate
- denite
- neosnippet
- vim-fugitive
- vim-gitgutter
その他
vimrcに記述した設定を移植した
" setting"文字コードをUFT-8に設定set fenc=utf-8" バックアップファイルを作らないset nobackup
" スワップファイルを作らないsetnoswapfile" 編集中のファイルが変更されたら自動で読み直すset autoread
" バッファが編集中でもその他のファイルを開けるようにset hidden
" 入力中のコマンドをステータスに表示するset showcmd
" シンタックスハイライト
syntax enable
" Y を、行末までのヤンクにする
nnoremap Y y$
" displayオプションset display=lastline
" 補完メニューの高さset pumheight=10" 括弧を入力した時に、対応する括弧に一瞬カーソル飛ぶset showmatch
set matchtime=1" インクリメント、デクリメントへのマッピング
nnoremap +<C-a>
nnoremap -<C-x>" 不可視文字を表示set clipboard+=unnamed
set clipboard=unnamed
" 括弧補完
inoremap {{}<LEFT>
inoremap (()<LEFT>
inoremap <<><LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
inoremap [[]<LEFT>" 見た目系" タイトルを表示set title
" 行番号を表示setnumber" 現在の行を強調表示set cursorline
" 現在の行を強調表示(縦)"set cursorcolumn" 行末の1文字先までカーソルを移動できるようにset virtualedit=onemore
" インデントはスマートインデントset smartindent
" ビープ音を可視化set visualbell
" 括弧入力時の対応する括弧を表示set showmatch
" ステータスラインを常に表示set laststatus=2" コマンドラインの補完set wildmode=list:longest
" 折り返し時に表示行単位での移動できるようにする
nnoremap j gj
nnoremap k gk
" Tab系" 不可視文字を可視化(タブが「▸-」と表示される)set list listchars=tab:\▸\-" Tab文字を半角スペースにするset expandtab
" 行頭以外のTab文字の表示幅(スペースいくつ分)set tabstop=4" 行頭でのTab文字の表示幅set shiftwidth=4" 検索系" 検索文字列が小文字の場合は大文字小文字を区別なく検索するset ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索するset smartcase
" 検索文字列入力時に順次対象文字列にヒットさせるset incsearch
" 検索時に最後まで行ったら最初に戻るset wrapscan
" 検索語をハイライト表示set hlsearch
" ESC連打でハイライト解除
nmap <Esc><Esc>:nohlsearch<CR><Esc>