ラベル NeoVim の投稿を表示しています。 すべての投稿を表示
ラベル NeoVim の投稿を表示しています。 すべての投稿を表示

2020/02/09

neovim + deoplete で kebab-case の補完をする

kebab-case(単語をハイフンで区切る) は snake_case や camelCase に比べ、比較的使われていないと思います。
ですが、 apt-get や docker-compose を打っていると少し利点を感じました。
  • 「Shift Key を押さなくて良い」
怠惰な私にとって採用理由として十分。なので zsh で使う function は kebab-case で記述しています。

さて、ここで小さな問題が発生しました。
neovim で利用している補完プラグインの deoplete が、default の設定では kebab-case を補完してくれない。
と、いうことで kebab-case も補完対象にするように設定したログです。


環境

  • OS: macOS Mojave 10.14.6
  • zsh: 5.7.1 (x86_64-apple-darwin18.2.0)
  • neovim: v0.4.3
  • deoplete: master(記事執筆時 6e01000280)
  • Python: 3.7.6
  • pynvim: 0.4.1


補完の設定

まず、補完の対象を設定する変数などが無いか、:help deoplete で探します。
ありました。keyword_patterns で filetype 別に正規表現を指定すれば良さそうです。
というか ruby の補完サンプルもありますね。末尾の ! や ? に対応している。便利そう。

話が逸れました。まず、kebab-case にマッチしそうな正規表現として
  • 最初の文字は alphabet と '_'
  • それ以降は alpabet と '_' と '-' が0回以上繰り返される
とします。これを具体的な正規表現にすると
  • [a-zA-Z_][a-zA-Z_-]*
で良さそうです。これを filetype zsh の補完に設定します。
何故 sh でなく zsh かと言うと、 sh では kebab-case のfunction が定義できない為です。

設定後、きちんと補完されるようになりました。良し良し。




おまけ(他の定義とか)

これで deoplete の補完対象の設定ができるようになりました。
zsh 以外の普段良く使う filetype の補完設定もしておきます。
  • ruby: 先程発見した ruby の補完設定で、先頭に '@' を加えたもの
  • text: 英数字も含めて補完対象を広めにしたもの
  • _: help にあった定義をそのまま利用。なお、この設定は全 filetype に適用されます
これらを鑑みて設定した、私用の具体的な keyword_patterns の設定はこんな感じ。以下抜粋。

2020/01/30

python2 に依存した Vim plugin が無いか確認と修正対応をしたお話

2020/01/01(Wed) に python2 のサポートが終了しました。が、今の所私の周辺で問題は発生していません。

Neovim で :checkhealth を実行していると、まだ python2 provider が有効な事にふと気付きました。
「いつか python2 provider も消えるのだろうな」と悠長に考えたのが1つ目の感想。
「python2 に依存した plugin があったらマズいのでは」と思って焦ったのが2つ目の感想。
「問題は発生していない」と思っているけれど、本当にそうなのか念のために確認+対応したログです。


環境

  • OS: macOS Mojave 10.14.6
  • Neovim: 0.4.3
  • Python2: 2.7.16 (system builtin)
  • Python3: 3.7.6 (installed by homebrew)


has('python') している plugin が無いか確認

私は Neovim の plugin management に dein を使っています。
そして、plugin の install 先は ~/.config/nvim/dein を指定しているので、その先に cd して grep をかけてみます。
  • $ cd ~/.config/nvim/dein/repos/github.com
  • $ egrep 'has\(.python.\)' -R .
egrep のオプションの -R は、指定したディレクトリを起点に recursive に探索してくれます。
そして、渡しているディレクトリは '.' なので、 カレントディレクトリ以下の全てのファイルを対象にできます。

egrep で指定した正規表現は 'has\(.python.\)' です。これは
  • まず、 vim/neovim で特定の feature が有効か確認する方法として 'has' function があります。
  • そして python2 provider が有効かどうかは has('python') の実行結果で分かります。
  • 加えて考慮する事として、python を括る文字が ' と " のどちらかの問題があります。
    • これは面倒なので . にしました。 ['"] 2つなどでもOKです。
  • 最後に、'()' は egrep パターンマッチに使う記号なので \ でエスケープします。

さて、実行結果は以下のようになりました。
前後のソースを読んではいないので、 現段階では対応が必要かもしれない plugin 一覧とします。


一時的に python2 provider を無効にする

Neovim で :help provider とすると、各 provider の説明が確認できます。
その中には provider を無効化する方法も存在しており、 python2 の場合は
  • let g:loaded_python_provider = 0
と ~/.config/nvim/init.vim に書くと無効化できます。

なお、この状態で :checkhealth を実行すると
  • - INFO: Disabled (g:loaded_python_provider=0).
と表示されます。

さて、これで仮に python2 provider が消えた時状態を再現できました。
先程 egrep で見付けたプラグインの動作確認を行なった結果、
が動作しませんでした。


VimCalc 対応: VimCalc -> VimCalc3

安直に「VimCalc python3」で検索をかけてみます。
そうすると、fedorenchik/VimCalc3 が見付かりました。なお、 fork 元は本家の gregsexton/VimCalc です。
お試しでインストールすると、ほぼ同じ動作。ということで VimCalc3 に乗り換えます。


gundo.vim 対応: let g:gundo_prefer_python3 = 1

さて、二度目も安直に「gundo.vim python3」でググります。
そうすると bitbucket の issue のページがヒットしました。どうやら既に対応済みだったらしく
  • let g:gundo_prefer_python3 = 1
と書くことで python3 を利用するようです。動作確認もできたので、 gundo.vim はそのまま使う事にします。


まとめ

これで Neovim がいつ python2 provider を消しても大丈夫になりました。

蛇足ですが、対応した2つのプラグインは利用頻度が低く、 LazyLoad していました。
なので、仮に Neovim が python2 provider を消したとしても、気付くのに時間がかかった可能性は十分にあります。
それを排除できたので、備えあれば何とやら、ですね。

2019/12/15

AquaSKK で Sticky Shift を使う

私は普段、mac で日本語入力をする時は AquaSKK を使っています。
AquaSKK は version 4.7.0 から Stickey Shift が実装されたようなので設定してみました。


環境

  • OS: macOS Mojave 10.14.6
  • Homebrew: 2.1.15-63-g090259b
  • Homebrew/homebrew-cask: (git revision ec6b9; last commit 2019-10-26)
  • AquaSKK: 4.7.0
  • neovim: 0.4.2
  • eskk.vim: 207d05cd


AquaSKK の install

homebrew-cask に formula があるので
  • $ brew cask install aquaskk
で Install できます。


SKK とは

日本語のかな漢字変換プログラムの一つです。
形態素解析を行なわず、漢字に変換、もしくは送り仮名付きの漢字の変換箇所をユーザが指定して入力します。
何を言っているのかさっぱりな感じもあるので、具体的な例を見ていきましょう。


漢字変換

例えば『漢字』と入力したい場合、「ことえり」や「Google 日本語入力」では
  • kanzi<space> または kanji<space>
と入力します。
そして SKK では、変換を開始する入力を大文字のアルファベットで指定します。よって
  • Kanzi<space> または Kanji<space>
と入力します。


送り仮名付き漢字変換

さて、次は『感じ』と入力したい場合を想定します。
「ことえり」や「Google 日本語入力」では変わらずに
  • kanzi<space> または kanji<space>
と入力します。また、その時の変換候補に『漢字』が出ることもあるでしょう。
SKK では送り仮名付きの漢字変換の時の変換箇所も大文字アルファベットで指定します。つまり
  • KanZi<space> または KanJi<space>
と入力します。そうすると、「感じ」「観じ」といった送り仮名付きの変換候補しか出ません。

さらに言えば、先程の『漢字』の入力について
  • Kanzi<space> または Kanji<space>
と入力した場合の変換候補は「漢字」「幹事」「監事」といった、送り仮名無しの候補しか出ません。
これが結構便利で、「送り仮名あり、送り仮名無し」の入力に関しては誤字が少なくなります。


横道: 形態素解析をしない、ということ

例に上げたように、漢字入力の際や送り仮名付きの漢字入力では SKK にはメリットがあります。
しかし、変換のポイントを自分で指定するため
  • これは漢字の入力のテストです
といった入力は一度にはできません。

「ことえり」や「Google 日本語入力」では全てのアルファベットを入力した後、先頭から少しずつ変換することができます。
なので、それぞれ得手不得手がある、と思った方が良いかと思われます。


Sticky Shift とは

さて、ここまで来ると Sticky Shift のお話ができます。
Sticky Shift とは、変換の指定ポイントを大文字のアルファベットでは無く、特定の文字で指定する方法です。

例えば、';' を設定した場合、先程の「漢字と感じ」は
  • ;kanji<space>to;kan;ji
と入力できます。
一見冗長ですが、慣れると便利です。

加えて、大文字入力が必要無いので Shift Key を使わずに入力を完結させることができます。
なお、eskk.vim では default で ';' Key が Sticky Shift 用の文字として実装されています。


Sticky Shift の設定

ので設定してみましょう。大元の設定をコピーして追記します。

なお、コピー先の ~/Library/Application\ Support/AquaSKK については、AquaSKK を install した時に作られています。
なので
  • $ cp /Library/Input\ Methods/AquaSKK.app/Contents/Resources/keymap.conf ~/Library/Application\ Support/AquaSKK
を実行してコピー。

そして ~/Library/Application\ Support/AquaSKK/keymap.conf に
  • StickyKey ;

その後、AquaSKK のプロセスを殺すか、reboot 等で AquaSKK が再起動すれば、Sticky Shift が有効になっているはずです。
めでたしめでたし。


参考

2019/09/01

neovim で plugin を利用せずに sudo を使う

root 権限が必要なファイルを neovim や vim で編集する事があると思います。
その際、 sudoers で許可されているユーザならば
  • :write ! sudo tee % > /dev/null
で sudo を使って root として書き込むことができます。

ですが、 neovim では
  • :write ! sudo tee % > /dev/null
    • sudo: no tty present and no askpass program specified
    • shell returned 1
と言われて sudo が使えません。


解決策

以下のようなコマンドを定義することで対応できます。 このコマンドは vim と neovim の両方で利用できます。

vim で利用する場合は ~/.vimrc に追記します。
neovim で利用する場合は ~/.cofig/nvim/init.vim に追記します。


使い方

  • $ nvim /etc/hosts
    • root 権限が必要なファイルを開いて編集します。保存の際は
  • :SudoWriteCurrentBuffer
    • を実行します。
    • パスワードを入力すれば root で書き込む事ができます。


動作確認をした環境

大元の環境(vim と neovim で動作確認済)
  • OS: macOS Mojave 10.14.6 (18G95)
  • Homebrew: 2.1.11
    • Homebrew/homebrew-core: (git revision 883ee; last commit 2019-09-01)
  • neovim: v0.3.8
  • vim: 8.0.1365
  • sudo: version 1.8.17p1
    • Sudoers policy plugin version 1.8.17p1
    • Sudoers file grammar version 45
    • Sudoers I/O plugin version 1.8.17p1
  • docker: 19.03.1, build 74b1e89

    docker を使っていくつかの distribution でも動作を確認
    • Alpine linux: 3.10.2
      • neovim: v0.3.7
      • vim: 8.1.1365
      • sudo: version 1.8.27
        • Sudoers policy plugin version 1.8.27
        • Sudoers file grammar version 46
        • Sudoers I/O plugin version 1.8.27
    • CentOS: release 7.6.1810 (Core)
      • vim: 7.4.1099
      • sudo: version 1.8.23
        • Sudoers policy plugin version 1.8.23
        • Sudoers file grammar version 46
        • Sudoers I/O plugin version 1.8.23
    • Fedora: release 30
      • vim: 8.1.1912
      • sudo: version 1.8.27
        • Sudoers policy plugin version 1.8.27
        • Sudoers file grammar version 46
        • Sudoers I/O plugin version 1.8.27
    • Ubuntu: 18.04.3
      • vim: 8.0.1453
      • sudo: version 1.8.21p2
        • Sudoers policy plugin version 1.8.21p2
        • Sudoers file grammar version 46
        • Sudoers I/O plugin version 1.8.21p2
    • Debian: 10.0 (buster-20190812)
      • vim: 8.1.1401
      • sudo: version 1.8.27
        • Sudoers policy plugin version 1.8.27
        • Sudoers file grammar version 46
        • Sudoers I/O plugin version 1.8.27


    何故 neovim では sudo が使えないのか

    ここから先は先程の Vimscript を作るに至った経緯を書きます。
    興味のある方はご覧ください。

    まず sudo の error message
    • sudo: no tty present and no askpass program specified
    を見ると、 tty と askpass が無いと言っています。


    tty と askpass

    実際、vim では
    • : ! tty
      • /dev/ttys004 
    などが得られますが、 neovim では
    • : ! tty
      • not a tty
      • shell returned 1
    と言われてしまいます。

    askpass は使ったことが無いのですが、fedora の container で dnf search すると
    の様に、いくつかの askpass が確認できます。のでちょっと試してみます。
    • x11-ssh-askpass
    • openssh-askpass
    • ksshaskpass
    という感じで全然起動してくれません。
    ですがエラーの内容的に display を開こうとしているのが分かります。
    なので、おそらく GUI で password を聞くような物だと思われます。


    askpass を作る

    askpass について調べていると、どうやら
    • password を stdout に出力するもの
    であることが分かりました。

    よって
    • neovim 内で password を取得
    • password を stdout に出力する
    • password の履歴はどこにも残さない
    ようなものを作れば解決できそうです。

    それで完成したのが /tmp/askpass を作るこの Vimscript です。

    本当はファイル名は固定でなく tempfile 的な物で対応するなど、改善点はいくつも存在するかと思います。
    ですが私は Vimscript に明るくないので、"3つの条件を満たして動けばOK" という条件で作成しました。
    他により良い対応方法があればご指摘頂けると幸いです。


    その他の解決策

    調べた結果、 suda.vim というプラグインがあるようです。
    また、他にも sudo.vim など、似たようなプラグインはいくつかあるらしいです。

    これを使わなかった理由としては
    • docker のコンテナ内で作業をする事が多々ある
    • init.vim を配置するスクリプトは既にある
    • plugin を install するスクリプトはまだ無い
    • 全コンテナに plugin を入れるのも面倒だし結構サイズがある
      • $ du -sh ~/.config/nvim/repos
        • 100M    /Users/atton/.config/nvim/repos
    などがあります。

    また、"sudo が使えるならこの際 root になってしまう" という解決策もあるのですが
    • 前述した理由の後半3つ
    • 複数人数のユーザが使う環境だと、 /root 配下に自分専用の設定を置くことになる
    のでこちらも無しで。

    他には、 "sudoers で NOPASSWD を設定する" という解決策もあります。
    が、sudo を no password でガンガン使えば実質 root で作業しているのと変わらず、危険すぎるのでこちらも無し。

    ということでこの Vimscript を書くに至った、という訳なのです。


    おまけ: 環境変数の unlet

    スクリプト内部では askpass の場所を示す SUDO_ASKPASS を設定している部分があります。
    具体的には
    • let $SUDO_ASKPASS  = s:askpass_path
    ですね。

    この環境変数を定義していると、 sudo -A した際に指定したファイルが実行されます。
    一応、 :SudoWriteCurrentBuffer の実行後にはなるべく元の環境に戻すために
    • unlet $SUDO_ASKPASS
    を書いていた時もありました。

    ですが動作確認中、 Vim 8.0.1365 で unlet 時にエラーが出てしまいました。
    また 、-A を指定しなければ sudo の動作は変わらないので 、残っていても無害と判断して unlet しない形になりました。


    おまけ: shebang を指定しないとどうなるのか

    ちなみに askpass の shebang を消すと
    • sudo: unable to run /tmp/askpass: Exec format error
    • sudo: no password was provided
    と言われる為、きちんと書いておく必要があります。


    おまけ: x flag を付けないとどうなるのか

    setfperm(s:askpass_path, "rwxr-xr-x")  をせずに 644 のままだと
    • sudo: unable to run /tmp/askpass: Permission denied
      • sudo: no password was provided
      と言われるので、こちらもきちんと指定しておく必要があります。


      参考

      2018/12/07

      ReFe + ref.vim で Neovim から Ruby の document を読む

      この記事は Okinawa.rb Advent Calendar 2018 の 7 日目の記事です。
      昨日の記事は @hanachin_ さんの 『refineをしてるモジュール取り出せるrefinements_robbery gem』 でした。


      なにができるの

      カーソルが指している(クラス|メソッド)名のドキュメントが一発で引けます。
      これが
      こうじゃ

      的な感じ。


      環境

      OS: macOS Sierra 10.12.6
      Neovim: 0.3.1
      ReFe: 2
      Ruby: 2.5.3p105 (2018-10-18 revision 65156)
      vim-ref: b45d10f6d0c82e3afd17774626e952fde03274a1



      NeoVim + vim-ref

      私の環境では NeoVim を使っていますが、Vim でもおそらく動くはずです。
      vim-ref というリファレンスを読むのに便利なツールがあり、2014年あたりから私は活用させてもらっています。


      ReFe 2

      クラス名かメソッド名を指定すると該当するドキュメントを表示してくれるツールです。


      ReFe + vim-ref

      さて。この二つを組み合せていきます。

      • $ bitclust setup
      で refe を使えるようにします。
      この時点で
      • $ refe Integer
      とするだけで

      のように表示できます。便利。

      ちなみに vim-ref は plugin を入れると refe に関しては設定無しでも動きます。
      normal mode で K を押すだけ。便利便利。


      まとめ

      ということで vim-ref を使って ReFe 2 を引くお話でした。
      ちなみに vim-ref で開いた buffer 内のワードでも refe を引けるので、色々と探検できたりします。
      後、地味な利点としてオフラインでもドキュメントが見られる点があります。
      快適な Ruby ライフをー

      2018/03/03

      Python 3 が /usr/local/bin/python に配置されるようになった Homebrew で NeoVim の :CheckHealth をパスさせる

      いつの間にか Homebrew の /usr/local/bin/python が python3 になってました。中々気合が入っている変更ですね。
      私は Python そのものはあまり使わないのですが、 Neovim が使っているのでいろいろと調整したログ。

      さて、この変更がある前の Neovim + Python 周りをまとめると
      • $ brew install python
        • python 2 系が入る
        • $ pip2 install neovim
        • pip2 は /usr/local/bin/pip2
      • $ brew install python3
        • python 3 系が入る
        • $ pip3 install neovim
        • pip3 は /usr/local/bin/pip3
      といった感じだったのですが、変更後は
      • $ brew install python
        • python 3 系が入る
        • pip3 は /usr/local/bin/pip
      • $ brew install python@2
        • python 2 系が入る
        • が、keg-only の formula 。
        • python2 や pip2 を使うには  /usr/local/opt/python@2/ などに PATH を通す必要がある
        • 詳しくは $ brew info python@2 
      という形になっているようです。
      keg-only の formula を使い続けると混乱しそうなので、python@2 はアンインストール。

      Python 2 系は system builtin のものを使うことにしました。
      root で書き込む必要があるのでしくじった時のダメージが大きいですが……

      ということで
      • $ brew uninstall python@2
      • $ sudo easy_install-2.7 neovim
      して解決。

      具体的な :CheckHealth の結果は
      • before
      • after

      といった感じです。:CheckHealth 便利。


      環境

      • macOS: 10.12.6
      • Homebrew: 1.5.7
      • Homebrew/homebrew-core (git revision b33d4d; last commit 2018-03-03)
      • NeoVim: 0.2.2
      • python2.7: 2.7.10 (macOS provided)
      • python: 3.6.4 (Homebrew provided)

      2017/11/13

      Ubuntu 16.04 LTS で NeoVim を使う

      AWS の EC2 インスタンスに Ubuntu 16.04 があったので使ってみる。
      環境構築の中で NeoVim のインストールと設定をしたログ。


      環境

      • OS: Ubuntu 16.04.3 LTS
      • apt: 1.2.24
      • NeoVim: 0.2.0
      • Ruby: 2.3.1p112
      • neovim gem: 0.6.1
      • Python2: 2.7.12
      • pip2: 8.1.1
      • python2-neovim: 0.2.0
      • Python3: 3.5.2
      • pip3: 8.1.1
      • python3-neovim: 0.2.0


      NeoVim 本体をインストール

      • # apt-get install -y software-properties-common python-software-properties
      • # add-apt-repository ppa:neovim-ppa/stable
        • Enter 押す必要があったけれど -y とか付けたら良かったのかな
      • # apt-get update
      • # apt-get install neovim
      で neovim 本体は入ります。楽で良い。


      dot_files を設定する

      私は dot_files を公開しているので
      • git clone https://github.com/atton/dot_files
      • cd dot_files
      • ./install.sh
      で設定終了。備えあれば何とやら。


      NeoVim の環境を整える

      私が使ってるプラグインが python3 必須だったりするのでその辺も整備。
      • # apt-get install -s ruby bundler
      • # gem install neovim
      • # apt-get install -y python3 python3-dev python3-pip python python-dev python-pip
      • # pip3 install neovim
      • # pip install neovim
      で python2 + python3 + ruby の環境が整った。
      :CheckHealth すると clipboard が無い以外は問題無い、とのことでOK。
      自己診断機能便利ですよね。 brew doctor とか。


      おまけ

      ec2 の IP 覚えるとか domain 振るのとか面倒なので私の ~/.ssh/config はこんな感じ。
      というかOSごとに default user name 違うってなんでやねん。

      2017/11/04

      #vimconf2017 にいってきた

      2017/11/04(Sat) に Vimconf 2017 があったのでいってきました。


      所感

      なんか全体的に高級感あった。
      全席電源あるし、WiFiは問題なく快適だし。昼ごはんはおいしい(あと白い恋人も付いてくる)。
      いんたーなしょなるかんふぁれんす感はかなりありましたね。


      はやぶささんの発表

      haya14busa さんの Vim 活の歴史。
      みんなに助けてもらったとか、アイデアを貰ったとか。
      とあるプラグインの一部をライブラリとして切り出してもらったりとか、ハートフルな話。
      私は EasyMotion 使ってないし、紹介された plugin もあまり入れて無いので、私とは違うタイプの Vimmer っぽそう。
      スライドの途中でもあったけれど「Vim ユーザには多様性があって良い」とのこと。
      Windows ユーザも多そうだしね。
      『VimScript はペイする言語』(うろおぼえ)
      置換時の offest とかは知らなかった。 conceal はう、頭が。


      key note by fatih

      He told about vim-go includes golang histories.
      I interested commands uses go using AST.
      It means very power full 2-way communication between vim and golang.
      Another hand can be actioned easily for other hand(like use go-fmt in vim).
      It's very important and interesting factor the in recent languagse.
      Multi-platform support is very difficult(like PATH).
      He gets 40+ ebooks from users say `I used vim-go. Where I donate?`


      おひるごはん

      豪華なすき焼き弁当でした。美味しかった。


      参加費用5400円ではあるけれど、良いものに出て赤字にならないのかな、と思ったら赤字だそうです。


      鼎談(3 vim legends)

      3人とも Windows ユーザなんだそう。
      なので Win で動かなかったらパッチぶん投げたりする方々。
      でも Bram の意思とか気分とかで取り込まれたり、取り込まれなかったりとか。
      昔のものを掘り起こすと、意外に取り込んでくれたりするらしい。
      Windows ユーザは大変そうだなー、という事を感じる。makeencoding とか。
      あと壊れてたら自分で Contrubute する精神重要だよな、とも感じる。
      卒論の時の yak shaving が元で vim に patch 作るとかすごいよなー。
      「割と度胸あるよね」「新幹線の中で作ってきた」「俺達には共通言語のCがあるやん」などのパワーワードが乱舞する。


      cocopon さんの話

      cocopon さんの colorscheme の話。
      icebarg と言えば知ってる人は知ってるそう。
      vim で syntax highlight を作るにはどうするか、に始まり、どういう風に配色を作るかまで。
      ちなみに私は colorscheme は default で使っているというテキトーさである。
      それでもおさえるべき汎用的なポイントはあったかな。
      • コンセプトを決める
      • 困ったらコンセプトに立ち帰る
      とか。
      ですが、この辺から体調が悪くなり始めてダウン。帰っちゃいました。


      まとめ

      会場とか高級感あった。参加者の話も分かりやすくまとまってた。
      mopp さんの司会も分かりやすく聞きとりやすい英語だった。
      惜しむらくは体調不良かな。懇親会が本番説もあるのでそこまでいけなかったのは口惜しいですが仕方無し。
      ブログを書くまでが勉強会、は達成できたので良しとしよう。
      Vimconf 2017 運営の方々 & 発表者の方々 ありがとうございました。

      2017/07/13

      Scientific Linux 7 に NeoVim を入れる

      これまたタイトル通りの作業ログ。
      CheckHealth が通る NeoVim にプラグインを入れるまで。

      環境

      • Scientific Linux release 7.3 (Nitrogen)
      • NeoVim 0.1.7


      インストール方法

      NeoVim 公式ドキュメントを見るとどうやら epel から入れられるっぽい?
      • # yum -y install epel-release
      • # curl -o /etc/yum.repos.d/dperson-neovim-epel-7.repo https://copr.fedorainfracloud.org/coprs/dperson/neovim/repo/epel-7/dperson-neovim-epel-7.repo
      • # yum install --enablerepo=epel jemalloc
      • # yum -y install neovim
      で NeoVim 0.1.7 が入った。


      CheckHealth を通す

      どうせなので CheckHealth が通るように gem とかを入れる。
      • # yum --enablerepo=epel install -y python-neovim msgpack msgpack-devel ruby ruby-devel python2 python2-devel python34 python34-devel python34-pip
      • # gem install neovim
      • # easy_install pip
      • # pip install neovim
      • # pip3 install neovim
      これで CheckHealth で怒られなくなった。


      dein.vim を入れる

      NeoVim に移った際にプラグインマネージャを dein に変更したのでそれのインストールも。公式の通りに
      • $ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
      • $ sh ./installer.sh ~/.config/nvim
      としておしまい。
      あとは :call dein#install() として他のプラグインをインストールして環境構築完了、と。

      2017/07/03

      NeoVim に移行した

      そろそろ NeoVim に移行したいなー、と思っていたので気合を入れて移行しました。


      環境

      • macOS Sierra 10.12.5
      • NeoVim 0.2.0
      • Homebrew 1.2.3-121-gb5529084
      • Homebrew/homebrew-core (git revision 72126; last commit 2017-07-02)
      • tmux 2.5 + EastAsianAmbiguous Patch


      やったこと

      まずは neovim の install 。
      • brew tap neovim/neovim
      • brew install neovim
      くらいで。

      その後は NeoVim の CheckHealth が通るようにいろいろと。
      • tmux.conf の default-terminal を screen-256-color に変更
      • gem install neovim
      • python2 を入れて easy_install neovim
      • python3 を入れて pip3 install neovim
      とかとか。自己診断機能便利。

      次に .vimrc の移動。
      neovim はデフォルトで ~/.config/nvim/init.vim を読みにいくのでそこに元の .vimrc を配置。
      .vimrc は source ~/.config/nvim/init.vim を見るようにした。
      それからプラグインの変更。
      • NeoBundle から dein へ
      • neocomplete から deoplete へ
      • Unite から Denite へ
      Unite 以外はそんなに問題無く移行できました。
      Unide は file_rec のオプションとか grep のオプションとかを denite 用に書き直す。
      あとは自作していた unite command を denite に対応させる。
      help が充実していてありがたいですね。流石は暗黒美無王さん。

      とかなんとかしていたgitのログはこの辺からこの辺までかな。


      まとめ

      移行にかかった時間は合計して丸一日くらい?
      file_rec が超高速になったのでうれしい。
      Unite とちょっと使い勝手が違うけれど、その辺りも変更するオプションがありそう。
      help の example が大変ありがたかった。
      あと先人の知恵は貴重だった。質問に高速で返答が来るのはありがたい。

      ということで Vim から NeoVim へと移行しました。