tmux/screen上でのnvimのescapeレスポンスを早くする - 真面目に、強く、上品に

これ!

ずっとneovimでESC押した後の次のキーの認識までのタイミングが長くて、vimのサクサクした操作というメリットがなくなっていました。しかしこの状況を言葉でなんと表現したら良いか難しくてググれず、困っていました。

いつも何か無意識にESCを押した後一瞬待つという謎のワークアラウンド作法が身につくほどでしたが、この度解決しました。ありがとうございます!サイコー!

macデフォルトは古いのでbrewで入れる。

% brew install ctags

vim-tagsを入れる。

.vimrc:

Plug 'szw/vim-tags'

let g:vim_tags_project_tags_command = "/usr/local/bin/ctags -R {OPTIONS} {DIRECTORY} 2>/dev/null"
let g:vim_tags_gems_tags_command = "/usr/local/bin/ctags -R {OPTIONS} `bundle list --paths` 2>/dev/null"

:TagsGenerateする。(.gitがあると.git/tagsに作られるみたい便利)

  • C-]: 定義にとぶ
  • C-o: 前のバッファに戻る
  • C-i: C-oの逆

2020年07月06日修正:bundle showはDEPRECATEDなのでbundle listに修正。(これが原因でtagが読めなくなってた)

.vimrc:

let NERDTreeShowHidden = 1

なんで今までやってなかったんだろう?

vimからneovimにうつって、なんか書き味が違う。

多分、キー入力とキー入力の間、「これだけの間何も入力しなかったら別の入力とみなす」って部分の秒数が長くなってる気がする。

だからvimのノリで移動して:wって打っても前の入力の続きと見なされて無効になっちゃう。

これってなんていうんだろう?なんていうキーワードでググればいいのかわからん・・・

どこかで設定できるのかな?

今時の若者風にvimのステータスをオシャレにしようと思ってvimプラグインのairlineを導入してみました。

vim-airline/vim-airline: lean & mean status/tabline for vim that's light as air

しかし、screenの上で動かすと全くカラフルにならずがっかり・・・。

https://gyazo.com/1319ee0e60af81843aaa05304c441953

256色対応するにはtmuxに移行しなきゃということなのか…?(screenの設定をtmuxに移すのが面倒な老害)

もしくは何らかのオプション付きで再コンパイルが必要か…?

と思ったらHigh Sierraのデフォルトのscreenでも~/.screenrcに下記を追加したら行けました。

term "screen-256color"

https://gyazo.com/c5a63beb261ea09ccac354b762a21dc6

やったね。

まだscreenで行けてよかった…。

vim8.0がリリースされたようです。

Vim 8.0 released! - Google グループ

Asynchronous I/Oとchannelが気になります。golangのchannelみたいなものかな?

これでasyncなsyntasticが普通な感じになったら嬉しいです。

というか今それが普通じゃないのがキツイですね。

ここ1年ぐらい家のPCでも会社のPCでもvimが落ちる。

splitして保存して終了したりすると落ちる。

不要な設定を全部はずして(syntastic以外)最小限で動かしても落ちる。

syntasticを使わなければ落ちないが、syntastic的なことができないなら他のエディタ使ったほうが良い。

おそらくpure vimの世界の問題じゃなくてpythonとかrubyとかの拡張系がおかしいんだとおもう。

色んなパターンで落ちてる人がいて各種対策を試してみたけど現状、俺の力では解決できなさそう。

他にもそんな人がいたらおすすめしたいのがMacVim(やMacVim-Kaoriya)をCLIで使う方法。

~/.zshrc:

alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'

色々といい塩梅でコンパイルされてるので動く。落ちない。良い。

gitでブランチ変更するたびにvimで開いてたバッファが実ファイルと違ってしまうのでいつもqa!して開きなおしてた。

atomだとデフォルトで読み込みなおしてくれるのでいいよなと思ってました。

git - Refresh all files in buffer from disk in vim - Stack Overflow

bufdo e!すればいいらしい。

カワイイヤッター!

C-t: カーソル部分のタグにジャンプ

C-o: 前いた場所に戻る(tagに限らずいつも使いまくるヤツ)

g C-t: タグ候補が複数ある場合に候補一覧を表示

この3つだけでクッソはかどる

Xcodeとかの機能がうらやましい

IDEでは当然の機能ですが、クラスやメソッドの定義に飛べるのって便利ですよね。vimやemacsでは設定すればできるんだろうけどやってる人あんまり見ない。

開いてるbuffer内のものしか飛べないとか、明示的にtag生成コマンド実行とか論外。

そんな折、Gemfileのgemを含めて保存時自動tag生成してくれるvim-tagsというpluginがとても良かったのでご紹介。

szw/vim-tags

vim-tagsの設定

$ brew install ctags
# ~/.vimrc:
Bundle 'szw/vim-tags'
let g:vim_tags_project_tags_command = "/usr/local/Cellar/ctags/5.8/bin/ctags -f tags -R . 2>/dev/null"
let g:vim_tags_gems_tags_command = "/usr/local/Cellar/ctags/5.8/bin/ctags -R -f Gemfile.lock.tags `bundle show --paths` 2>/dev/null"
set tags+=tags,Gemfile.lock.tags

macデフォのctagsはbsdで色々違うのでbrewで入れてfullpath指定。

ファイル保存時にtagsファイルを生成。ちょっと遅くなるので非同期実行するvim-dispatch pluginとの連携も試してみたいと思います。

tpope/vim-dispatch

とにかく機能が細かくgemに分割される昨今。これははかどる!

Syntax highlightだけだけど。

" ~/.vimrc:
Bundle 'slim-template/vim-slim'
:BundleInstall