Persistence

技術メモなど

vim環境の更新など

ちょっとしたテキストファイル(jsonなど)の編集にいちいちVSCodeを起動するのがだるくなってきたので、vimでサクッとできるように環境を整えることにした。

環境はMacOSです。

neovimから本家のvim

vimはneovimの2.xがインストールされてたんだけど、neovimの活動状況があまり活発でないように見えたので本家のvimに変更した。

$ brew uninstall neovim
$ brew install vim

本家のvimのインストールの際に --with-lua をつけると入力補完の機能が使えるようになるという記事を見たんだけど、いまは --with-lua オプションはなく、標準でインストールされた。

neobundleからdein.vim

neobundleの公式にdein.vimへの移行が推奨されていたので、dein.vimに移行した。

インストール手順はこのあたり。

https://github.com/Shougo/dein.vim#unixlinux-or-mac-os-x

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein

neobundleでインストールしていたパッケージは、call dein#add('リポジトリ名など') と書く。

  " Add or remove your plugins here like this:
  call dein#add('Shougo/neosnippet.vim')
  call dein#add('Shougo/neosnippet-snippets')
  " ディレクトリツリー
  call dein#add('scrooloose/nerdtree')
  " マルチカーソル
  call dein#add('terryma/vim-multiple-cursors')

そして、vimを起動して :call dein#install() を実行するとパッケージがインストールされる。 以下のように起動時にインストールチェックをするようにしても良い。

if dein#check_install()
  call dein#install()
endif

nerdtree

vimIDEのようなファイルツリーを表示してくれるパッケージ。 操作方法を覚えるのは結構大変だけど慣れるしかない。 キーマップは以下を設定した。

" Toggle NERDTree
map <C-t> :NERDTreeToggle<CR>
" move left Tab
"map <C-[> gT " 有効にすると起動時に置換モードになってしまう
" move right Tab
map <C-]> gt

ところがコメントにもある通り、 map <C-[> gT を設定すると起動時に置換モードになるという事象に遭遇し未解決状態。個人的にタブの切替は [] 以外に使いたくないので解決したい。

vim-multiple-cursors

マルチカーソル機能を提供してくれるパッケージ。 これを使う以前にvimのVisualモードなどを使いこなす必要があり、全く速度が出ない。

Insertモードでdeleteキーが効かない問題

ずっと前からおかしいなと思いつつ放置していたが、vim-multiple-cursorsを使いこなすためにも必要なので調べてみたら一瞬で解決した。

vimで文字が削除出来ないと思ったらバックスペースが効かなくなった - Qiita

gitのcommitコメントを書くときとかもdeleteキーが効かなくて煩わしかったので解決できてよかった。

fish shellでnodeのcompletionエラーが出る問題

vimとは関係ないけど気になっていたので直した。

症状

$ node [ここでTabキーを入力] __fish_not_contains_opt: Unknown option --version
__fish_not_contains_opt: Unknown option --version
__fish_not_contains_opt: Unknown option --version
__fish_not_contains_opt: Unknown option --eval

調べたらだいたいすぐ解決方法は見つかった。

https://fishshell.com/docs/current/commands.html#fish_update_completions

$ fish_update_completions

これだけ。fish shellは ~/.config/fish/completions/ にcompletionファイルを配置するようになっている。 fish_update_completions コマンドは、それを最新にするコマンド。要するにcompletionファイルが古かっただけだった。このコマンドは定期的に実行するように仕組み化しておきたい。自動で差分更新してくれればいいんだけどな。

dotfile

ほとんどいじってないけどdotfileはこちらに公開しています。

GitHub - bisque33/dotfiles