[TOC]

1. Neovimの紹介

vi->vim->neovim(イマココ)の順に開発されており最新のものがneovim

2. インストール(終了後にnvimコマンドが使用可)

2.1. MacOS上にインストール(Mac環境)

pyenvを使用している人向け.brewneovimをインストール

主な参考資料,neovim公式

  1. neovimをインストール

    #brew tap neovim/neovim
    brew install neovim
    #brew install --HEAD neovim
    
  2. 設定ファイルを作成

    mkdir -p ~/.config/nvim
    touch ~/.config/nvim/init.vim #初期設定ファイル
    

2.2. CentOS上にインストール(local環境)

  1. 事前に必要なパッケージは管理者権限がある人にインストールしてもらう

    sudo yum -y install libtool autoconf automake cmake gcc gcc-c++ make pkgconfig unzip

  2. ~/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
    
  3. パスを通す

    ~/.bashrcに以下を追加

    #~/local/binにパスを通す(/usr/bin/,/usr/local/binより優先) 2018/11/14
    export PATH=$HOME/local/bin:$PATH
    
  1. 設定ファイルを作成

    mkdir -p ~/.config/nvim
    touch ~/.config/nvim/init.vim #初期設定ファイル
    

    ソースからビルド(local環境ではない)

    localにインストール

3. 環境設定

3.1. 基本的な設定

3.1.1. 一般設定

  1. 拡張機能でpythonを使うものがあるのでpipでインストールしておく

    pip install neovim

  2. ~/.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の設定方法

  1. colorshemeのpluginをインストール

    ~/.config/nvim/dein.tomlに以下を追加

    #色指定
    [[plugins]]
    repo = 'NLKNguyen/papercolor-theme'
    
  2. 設定ファイル~/.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をインストール

  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/
    
  2. 設定ファイルを置く場所を指定

    ~/.bashrcに以下を記載

    #neovimの設定ファイルを置く場所を指定 2018/11/14
    export XDG_CONFIG_HOME=$HOME/.config
    

3.2.2. オススメplugin

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をインストール

  1. 導入するプラグインを記述

    オプションの参考資料

    ~/.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>
    '''
    
  2. 確認作業

    $ pyenv which python
    #$HOME/.pyenv以下が出力されていることを確認
    /Users/akirat/.pyenv/versions/3.6.3/bin/python
    $ which pip
    #$HOME/.pyenv以下が出力されていることを確認
    /Users/akirat/.pyenv/shims/pip
    
  3. 設定ファイルを作成

    ~/.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. 事前準備

  1. ctagコマンドをダウンロード
    • Macの場合
      1. インストール:brew install ctag
      2. エイリアスを通す ~/.bash_profileに以下を追記alias ctags="`brew --prefix`/bin/ctags"
      3. 設定を反映 source ~/.bash_profile
  2. ctagファイルを作成 ソーツツリーのトップでctag -Rを実行(ctagというファイルが作成される)
  3. nvimを開いた後にtagのパスを通す :set tags=<tags_path>
コマンド 意味
g C-] (gキー入力後にControlキーを押しながら]キーを押す) 定義に複数候補がある場合に選択
C-t 直前のタグに戻る

vimでtag jamp参考資料

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
Last modified by akirat1993 2020-01-09 11:24:34
Created by akirat1993 2019-05-26 02:56:51

results matching ""

    No results matching ""