[TOC]
1. Neovimの紹介
vi->vim->neovim(イマココ)
の順に開発されており最新のものがneovim
2. インストール(終了後にnvimコマンドが使用可)
2.1. MacOS上にインストール(Mac環境)
pyenv
を使用している人向け.brew
でneovim
をインストール
neovim
をインストール#brew tap neovim/neovim brew install neovim #brew install --HEAD neovim
設定ファイルを作成
mkdir -p ~/.config/nvim touch ~/.config/nvim/init.vim #初期設定ファイル
2.2. CentOS上にインストール(local環境)
事前に必要なパッケージは管理者権限がある人にインストールしてもらう
sudo yum -y install libtool autoconf automake cmake gcc gcc-c++ make pkgconfig unzip
~/local/binにインストール
#実行ファイルを置く場所を作成 mkdir -p ~/local/bin cd ~/local/bin # パッケージをgit clone git clone https://github.com/neovim/neovim cd neovim #buildファイルがあったら削除 #rm -r build #makec make CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH=$HOME/local" make install
パスを通す
~/.bashrc
に以下を追加#~/local/binにパスを通す(/usr/bin/,/usr/local/binより優先) 2018/11/14 export PATH=$HOME/local/bin:$PATH
設定ファイルを作成
mkdir -p ~/.config/nvim touch ~/.config/nvim/init.vim #初期設定ファイル
3. 環境設定
3.1. 基本的な設定
3.1.1. 一般設定
拡張機能でpythonを使うものがあるので
pip
でインストールしておくpip install neovim
~/.config/nvim/init.vim
に設定を記述(必要な部分だけ真似すること)"---------------------------------- "一般設定 "---------------------------------- set number "行番号を表示 2018/11/10 set tabstop=4 "タブを何文字の空白に変換するか 2018/11/10 set shiftwidth=4 "自動インデント時に入力する空白の数 2018/11/10 set foldmethod=indent "(インデントで折りたたみを自動作成してくれる) 2018/11/13 set smartindent "前の行のインデントを継承してくれる 2018/11/14
3.1.2. カラースキーム(colorshcme)設定
dein.vimを用いたcolorschemeの設定方法
colorshemeのpluginをインストール
~/.config/nvim/dein.toml
に以下を追加#色指定 [[plugins]] repo = 'NLKNguyen/papercolor-theme'
設定ファイル
~/.config/nvim/init.vim
に以下を記述... "dein.tomlに記載したカラースキームをインストール if dein#check_install() call dein#install() endif "----------------------------- "カラースキームの設定 "----------------------------- "set termguicolors ←(必要な場合がある)enable true colors support "let ayucolor="light" ←カラースキームの設定 set t_Co=256 "←(必要な場合がある) set background=light "基本lightかdark "colorscheme ayu colorscheme PaperColor "←カラースキームの設定 syntax on " ←コイツをかいとく
3.2. dein.vim(パッケージ管理ツール)を用いたプラグイン設定
3.2.1. プラグイン管理ツールdein.vimをインストール
インストール
mkdir -p ~/.cache/dein cd ~/.cache/dein wget https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh sh ./installer.sh ~/.cache/dein/
設定ファイルを置く場所を指定
~/.bashrc
に以下を記載#neovimの設定ファイルを置く場所を指定 2018/11/14 export XDG_CONFIG_HOME=$HOME/.config
3.2.2. オススメplugin
pluin | 機能 |
---|---|
vimproc | 非同期処理を実現するためのプラグイン.時間のかかる処理を実行した時に,vimが一見応答不能な状態に見えたり,処理中で何もできなくなってしまうことがあります.重たい処理を非同期実行にすることにより,ユーザーが作業をブロックされることを防ぐことができる.参考 |
deoplete | Neovim用の補完機能ページの中段(動画で使用例が見れる) |
denite | ファイルランチャー.denite起動→絞り込み→開く を実現参考資料 ソース 英語 |
deoplete-jedi | Python用の補完機能 詳しい解説 |
neomru | Most Recently Used 最近開いたファイルをdeniteで表示するために使用設定の仕方の参考 |
gen_tags.vim | タグジャンプ用のプラグインでgtagsがインストールされてることが前提.されてない場合はファイルをまたがるタグジャンプが出来ない |
lighttiger2505/gtags.vim | タグジャンプでもしかしたら必要 |
3.2.3. pluginをインストール
導入するプラグインを記述
~/.config/nvim/dein.toml
に以下を記述(Neovim起動時に読み込み)[[plugins]] repo = 'Shougo/dein.vim' [[plugins]] #非同期処理を実現するためのプラグイン 2018/11/14 #http://kaworu.jpn.org/vim/vimproc repo = 'Shougo/vimproc.vim' [[plugins]] #色指定 repo = 'romainl/Apprentice' [[plugins]] #file luncher 2018/11/14 #https://qiita.com/okamos/items/4e1665ecd416ef77df7cn repo = 'Shougo/denite.nvim' [[plugins]] # インデントを見やすく 2018/11/14 repo = 'Yggdroot/indentLine'
~/.config/nvim/dein_lazy.toml
に以下を記述[[plugins]] #補完機能 2018/11/14 repo = 'Shougo/deoplete.nvim' on_event = 'InsertEnter' hook_add = ' #←実際はシングルクオテーションを3つだけど表示が失敗するので1つで表記 let g:deoplete#enable_at_startup = 1 let g:deoplete#auto_complete_delay = 0 '#←実際はシングルクオテーションを3つだけど表示が失敗するので1つで表記 [[plugins]] #pythonの補完機能 2018/11/14 #https://blog.515hikaru.net/entry/2017/06/25/043035 repo = 'zchee/deoplete-jedi' on_i = 1 #on_i 1を指定すると、インサートモードに入った時に読み込まれます on_ft = 'python' #on_ft 指定したファイルタイプの時に読み込まれます [[plugins]] #最近開いたファイルをdeniteで表示するために使用 2018/11/14 #設定の仕方の参考 #http://takkii.hatenablog.com/entry/2016/09/06/095820 repo = 'Shougo/neomru.vim' on_source = ['denite.vim'] on_path = '.*' [[plugins]] #関数ジャンプ用のgtagを自動生成 #関数ジャンプ用のgtagを非同期で更新してくれる #紹介HP:https://qiita.com/lighttiger2505/items/e0ada17634516c081ee7 repo = 'jsfaint/gen_tags.vim' hook_add = ''' let g:gen_tags#ctags_auto_gen = 1 let g:gen_tags#gtags_auto_gen = 1 ''' [[plugins]] #カーソルの文字列の定義・参照をquickfixで表示 #参考:https://qiita.com/lighttiger2505/items/6b1cd3bc79cb9806a743 repo = 'lighttiger2505/gtags.vim' hook_add = ''' " Options let g:Gtags_Auto_Map = 0 let g:Gtags_OpenQuickfixWindow = 1 " Keymap " Show definetion of function cousor word on quickfix nmap <silent> K :<C-u>exe("Gtags ".expand('<cword>'))<CR> " Show reference of cousor word on quickfix nmap <silent> R :<C-u>exe("Gtags -r ".expand('<cword>'))<CR> '''
確認作業
$ pyenv which python #$HOME/.pyenv以下が出力されていることを確認 /Users/akirat/.pyenv/versions/3.6.3/bin/python $ which pip #$HOME/.pyenv以下が出力されていることを確認 /Users/akirat/.pyenv/shims/pip
設定ファイルを作成
~/.config/nvim/init.vim
に以下を書き込むpython_host_progのところは現在使用しているpythonにする
"-------------------------------------------------- "deinによるパッケージ管理 "-------------------------------------------------- "Mac等でneovimをbrewで入れたがpyenvで使用しているpythonを参照させたいとき 2018/11/14 if has("mac") let g:python_host_prog = "$(pyenv root)/versions/$(pyenv global)/bin/python" endif " 2018/11/14 if &compatible set nocompatible endif "2018/11/14 set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim " プラグインを読み込む 2018/11/14 if dein#load_state('~/.cache/dein') call dein#begin('~/.cache/dein') "TOMLを読み込み(lazy:0->Neovim起動時に読み込み,lazy:1->遅延読み込み) call dein#load_toml('~/.config/nvim/dein.toml', {'lazy': 0}) call dein#load_toml('~/.config/nvim/dein_lazy.toml', {'lazy': 1}) call dein#end() call dein#save_state() endif " プラグインの追加・削除やtomlファイルの設定を変更した後は " 適宜 call dein#update や call dein#clear_state を呼んでください。 " そもそもキャッシュしなくて良いならload_state/save_stateを呼ばないようにしてください。 " その他インストールしていないものはこちらに入れる if dein#check_install() call dein#install() endif "よくわからない 2018/11/14 filetype plugin indent on syntax enable "カラースキームを使えるように変更 "http://www.maruc.net/2016/07/11/dein-vimのcolorscheme/ "colorscheme Apprentice " ←コイツと colorscheme PaperColor "←カラースキームの設定 syntax on " ←コイツをかいとく "---------------------------------- "一般設定 "---------------------------------- "-------------- set number "行番号を表示 2018/11/14 set tabstop=2 "タブを何文字の空白に変換するか 2018/11/14 set shiftwidth=2 "自動インデント時に入力する空白の数 2018/11/14 set cursorcolumn "列のハイライト 2018/11/14 set foldmethod=indent "(インデントで折りたたみを自動作成してくれる) 2018/11/14 set smartindent "前の行のインデントを継承してくれる 2018/11/14
4. Plugin
4.1. Plugin詳細
4.1.1. denite
用法 | コマンド |
---|---|
前回のdeniteバッファを再表示 | :Denite -resume |
最近使ったファイルを表示 | :Denite file_mru |
前回のdeniteバッファを再表示 | :Denite neoyank |
Deniteのbufferを閉じる | <C-c> |
挿入モードに切り替え | i |
アクションを選択(アクションを選択します) | <Tab> |
親ディレクトリに移動(ノーマルモード) | U |
次の行に移動(insertモード) | <C-g> |
前の行に移動(insertモード) | <C-t> |
全般
用法 | コマンド |
---|---|
カレントディレクトリを表示/再帰的に表示 | :Denite file/file_rec |
現在開いているバッファのディレクトリでDenite | :DeniteBufferDir |
インサートモード
用法 | コマンド |
---|---|
上/下に移動 | <C-t>/<C-g> |
ノーマルモードに切り替え | <C-o> |
ノーマルモード
用法 | コマンド |
---|---|
パスを指定 | P |
4.2. pluginを追加した場合の処理(dein.toml, dein_lazy.toml)
:call dein#update()
:call dein#clear_state()
5. 便利機能
5.1. ctag(関数ジャンプ)
5.1.1. 事前準備
ctag
コマンドをダウンロード- Macの場合
- インストール:
brew install ctag
- エイリアスを通す
~/.bash_profile
に以下を追記alias ctags="`brew --prefix`/bin/ctags"
- 設定を反映
source ~/.bash_profile
- インストール:
- Macの場合
- ctagファイルを作成
ソーツツリーのトップで
ctag -R
を実行(ctagというファイルが作成される) nvim
を開いた後にtagのパスを通す:set tags=<tags_path>
コマンド | 意味 |
---|---|
g C-] (gキー入力後にControlキーを押しながら]キーを押す) |
定義に複数候補がある場合に選択 |
C-t |
直前のタグに戻る |
6. 使用方法
6.1. コマンド備忘録
6.1.1. コマンド一般
用途 | コマンド |
---|---|
ディレクトリを移動 | :lcd /path/to/directory |
Windowを閉じる(バッファを閉じない) | :close refe page |
(タグジャンプ中に)元の位置に戻る/その逆 | Ctrl-o / Ctrl-i |
タグジャンプ | Ctrl-] |
最近開いたファイルを開く | :bro ol (browse oldfilesの略)参考資料 |
現在開いているバッファのファイル名を変更 | :file new_file |
直言のbufferを開く | :b # |
コマンド履歴の表示 | q: |
前方検索履歴, 後方検索 | q/ ,q? |
Yank複数yank | "{character} |
Pate | "{character}p /"0y |
インサートモードでの貼り付け | <C-R>" |
レジスタ表示 | :reg |
置換(範囲指定後) | '<,'>s/置換文字/置換後文字/オプション オプション:g->マッチした全ての文字を置換,c->マッチするたびに |
置換行数指定 | 開始行,終了行s/置換文字/置換後文字/オプション |
検索文字列を置換 | / で文字列を検索した後で%s//<replace word>/cg |
縦分割から横分割 | ⌥-w t ,⌥-w K |
6.1.2. コードの折りたたみ
設定ファイル~/.config/nvim/init.vim
などに以下を追記しておく
set foldmethod=indent "(インデントで折りたたみを自動作成してくれる) 2018/11/13
説明 | ショートカット |
---|---|
全ての折り畳みを開く | zR |
カーソルの下の折畳を一段階閉じる | zc |
全ての折りたたみを閉じる | zM |
カーソルの下の折畳を再帰的に全て閉じる | zC |
カーソルの下の折畳を一段階開く | zo |
カーソルの下の折畳を再帰的に全て開く | zO |