vim初心者のためのNeoVim導入方法
そもそもvimをそんなに触ったことのない自分が、いろいろとエディタについて調べたらvimはオワコンなのでNeoVimを使ったほうが良いと開発者が言っているらしいことを知った。さらにNeoBundleよりdeinやdein_lazyを使ったほうがパフォーマンスが良いらしい。
そんな感じでNeoVimを導入しようとしたけどdeinを導入することになったのでここに残しておくことにした。
NeoVim環境構築
とりあえず以下のようにすればそこそこのNeoVimを使えるようになる。
dein.tomlにプラグインを書けば、nvimコマンドを使った時に自動でダウンロードしてくれるので簡単。
$ brew install neovim
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein
自分の環境ではなぜか.config/nvim/init.vimが作成されなかったので、作ってからvimで編集
$ mkdir ~/.config/nvim
$ touch ~/.config/nvim/init.vim
$ vim ~/.config/nvim/init.vim
~/.config/nvim/init.vimに以下を記述。
set number "行番号を表示
set autoindent "改行時に自動でインデントする
set tabstop=2 "タブを何文字の空白に変換するか
set shiftwidth=2 "自動インデント時に入力する空白の数
set expandtab "タブ入力を空白に変換
set splitright "画面を縦分割する際に右に開く
set clipboard+=unnamed "ヤンクしたらクリップボードにコピー<Paste>
set hls "検索した文字をハイライトする"
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim
" undoを編集前に戻せるように設定
if has('persistent_undo')
set undodir=~/.config/nvim/undo
set undofile
endif
" Shift + h,j,k,lで移動距離10倍
nnoremap <S-k> 10<UP>
nnoremap <S-j> 10<DOWN>
nnoremap <S-h> 10<LEFT>
nnoremap <S-l> 10<RIGHT>
vnoremap <S-k> 10<UP>
vnoremap <S-j> 10<DOWN>
vnoremap <S-h> 10<LEFT>
vnoremap <S-l> 10<RIGHT>
if &compatible
set nocompatible
endif
if dein#load_state('~/.cache/dein')
call dein#begin('~/.cache/dein')
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
if dein#check_install()
call dein#install()
endif
filetype plugin indent on
syntax enable
:command UP UpdateRemotePlugins
dein.tomlを作ってvimで編集
$ touch ~/.config/nvim/dein.toml
$ vim ~/.config/nvim/dein.toml
~/.config/nvim/dein.tomlに以下を記述
[[plugins]]
repo = 'Shougo/dein.vim'
[[plugins]]
repo = "vim-scripts/grep.vim"
hook_add = '''
source ~/.config/nvim/plugins/grep.vim
'''
[[plugins]]
repo = "ctrlpvim/ctrlp.vim"
hook_add = '''
source ~/.config/nvim/plugins/ctrlp.vim
'''
[[plugins]]
repo = 'scrooloose/nerdtree'
hook_add = '''
source ~/.config/nvim/plugins/nerdtree.vim
'''
[[plugins]]
repo = 'tpope/vim-endwise'
[[plugins]]
repo = 'Townk/vim-autoclose'
[[plugins]]
repo = 'cocopon/iceberg.vim'
hook_add = '''
source ~/.config/nvim/plugins/color_iceberg.vim
'''
[[plugins]]
repo = 'w0rp/ale'
[[plugins]]
repo = 'airblade/vim-gitgutter'
hook_add = '''
source ~/.config/nvim/plugins/gitgutter.vim
'''
[[plugins]]
repo = 'tpope/vim-fugitive'
hook_add = '''
source ~/.config/nvim/plugins/fugitive.vim
'''
[[plugins]]
repo = 'Shougo/denite.nvim'
hook_add = '''
source ~/.config/nvim/plugins/denite.vim
'''
[[plugins]]
repo = 'osyo-manga/vim-anzu'
hook_add = '''
source ~/.config/nvim/plugins/anzu.vim
'''
dein_lazyを作ってvimで編集
$ touch ~/.config/nvim/dein_lazy.toml
$ vim ~/.config/nvim/dein_lazy.toml
~/.config/nvim/dein_lazy.tomlに以下を記述
[[plugins]]
repo = 'Shougo/deoplete.nvim'
on_event = 'InsertEnter'
hook_add = '''
source ~/.config/nvim/plugins/deoplete.vim
'''
$ nvim .
でnvimを開いたら、インストールするか聞かれるのでreturnを押して完了。
そしてプラグイン用のファイルを作り、カスタマイズの内容を書く。たとえばnerdtreeの場合は以下のようにする
$ mkdir ~/.config/nvim/plugins
$ touch ~/.config/nvim/plugins/nerdtree.vim
$ vim ~/.config/nvim/plugins/nerdtree.vim
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let g:NERDTreeShowHidden=1
nnoremap <silent><C-t> :NERDTreeToggle<CR>
全部のプラグインでやると以下のようになった。
$ cd ~/.config/nvim/plugins
$ touch anzu.vim color_iceberg.vim denite.vim ctrlp.vim denite.vim deoplete.vim fugitive.vim gitgutter.vim grep.vim
$ ls ~/.config/nvim/plugins/
anzu.vim color_iceberg.vim ctrlp.vim denite.vim deoplete.vim fugitive.vim gitgutter.vim grep.vim nerdtree.vim
整理整頓がしやすい気がします。
vimの使いかたについてはhttps://hi-algorithm.com/vim-command/を参照