Help us understand the problem. What is going on with this article?

Neovim導入 -思考の速さの編集を求めて-

More than 1 year has passed since last update.

概要

Neovimの設定方法、エラーとの戦いを主に記しています。
そして、ただ今奮闘中であります。

neovimに手を出した理由
* atom重すぎ
* 書籍「実践Vim 思考のスピードで編集しよう!」のタイトルに惹かれ、
* まずはゴリゴリでモダンな環境を整えるところから始める

とりあえずURL貼っときます。
実践Vim 思考のスピードで編集しよう! (amazon)

導入環境

2018/4/6 現在

  • OS macOS Sierra 10.12.6
  • neovim 0.2.2

現状

スクリーンショット 2018-04-07 21.35.41.jpg

設定ファイルはこちら https://github.com/KenziTajima/neovim

うまくいったこと

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ファイルのディレクトリをセット
  let s: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)

見た目をモダンにする

導入したプラグイン

theme設定 (init.vimに記述)

colorscheme onedark
let g:airline_theme='oceanicnext'

以下設定

" パワーラインでかっこよく
"let g:airline_powerline_fonts = 1 設定すると文字化けを起こす。
" カラーテーマ指定してかっこよく
"let g:airline_theme = 'badwolf'
" タブバーをかっこよく
let g:airline#extensions#tabline#enabled = 1
" 選択行列の表示をカスタム(デフォルトだと長くて横幅を圧迫するので最小限に)
let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v'])
" virtulenvを認識しているか確認用に、現在activateされているvirtualenvを表示(vim-virtualenvの拡張)
let g:airline#extensions#virtualenv#enabled = 1
" gitのHEADから変更した行の+-を非表示(vim-gitgutterの拡張)
let g:airline#extensions#hunks#enabled = 0
" Lintツールによるエラー、警告を表示(ALEの拡張)
let g:airline#extensions#ale#enabled = 1
let g:airline#extensions#ale#error_symbol = 'E:'
let g:airline#extensions#ale#warning_symbol = 'W:'

参考元は忘れました。<(_ _)>

QuickRunを導入

vinないでコンパイル、実行を行えるようになります。

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'

に変更したところ解決。

vimprocを用いた非同期処理

参考は同上 vim-quickrun シンプルかつまともに使える設定 (Qiita)

まずはvimprocをインストール
(dein.toml)に以下のように記述する。

[[plugins]]
repo = 'Shougo/vimproc.vim'
build = 'make'

次にQuickRunの設定
以下のように(init.vim)に記述する。

let g:quickrun_config = get(g:, 'quickrun_config', {})
let g: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, ' && '))

そこで、GitHubShougo/vimproc.vimをのぞいてみるとmakeコマンドを実行する必要がありそうなので、インストールしたディレクトリまで移動してコマンドを実行すると解決できました。

まだうまくいっていないこと

QuickRun関連

<C-c>で強制終了させる。

参考 vim-quickrun シンプルかつまともに使える設定 (Qiita)

調べたら以下のようにinit.vimに記述したら好きなタイミングで終了できるらしい

nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : "\<C-c>"

しかし以下のように表示されるのみ

Type  :quit<Enter>  to exit Nvim

ショートカットキーを変更するとただ反応しなくなったし、他のコマンドを割り当てるとしっかり反応する。
原因不明です。

まだ試していないこと

以下のプラグインはまだいじっていない

  • deoplate
  • denite
  • neosnippet
  • vim-fugitive
  • vim-gitgutter

その他

vimrcに記述した設定を移植しました。

" setting
"文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
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
" 行番号を表示
set number
" 現在の行を強調表示
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>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした