Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimでもminimapぽいことがしたいのでnanomap.vimをつくった

$
0
0

TL; DR

こういうVim pluginを作りました。
https://github.com/hisaknown/nanomap.vim

Sublime TextにおけるMinimap

オシャレテキストエディタとして有名なSublime Textには、Minimapという機能があります。
画面の右側に出る、コードの縮小表示です。
Minimap on Sublime Text

私は主にVimを使っているのですが、Vimにもこういう機能が欲しいなあと常々思っていました。

偉大な先達たち

実はこれまでにもVimでMinimapしようとした人々はいらっしゃいます。

問題点

  • KoRoNさん実装
    • GVimでしか動かない & GVim複数起動はちょっと……
  • Lemaignanさん実装
    • スクロールしていくと表示が崩れる…… @ GVim on Windows
  • (そもそも論ですが) 元々のMinimapってカーソル周辺の縮小表示しかない (i.e. 大きいファイルが対象の場合、Minimap自体にスクロールが発生する) けど、どっちかというとカーソル周辺よりはファイル全体のoverviewが見たい

作ったもの

https://github.com/hisaknown/nanomap.vim
Screencast of nanomap.vim

機能

  • 対象バッファの右側に、細長いバッファをつくってファイル全体の密度を濃淡で表示
    • Unicodeの上半分ブロック (▀) を使うことで、解像度を底上げ
  • 現在の表示位置をハイライト表示
  • マップの任意の行で <CR>すると該当行に移動
  • (最近の流行りに乗って、timerjobを使って実装)
  • (setbuflineも使っているので、最近のVim (たぶん8.0.1274以降) でないと動かない)

Future work & Known issues

  • /で検索したときに、どこにマッチがあるか表示したい
    • やればできそう
  • syntaxとhighlihgtを大量に定義しているので (?)、マップの更新時 (デフォルトでは500msおき) に若干もたつくことがある
    • これはどうにかしたいけれど、どうすれば良さそうか分からない……
    • Workaroundとしては、使う色数を減らすとよいと思われる
  • もうちょっと気の利いた配色を作りたい

おわりに

初Vim pluginなのでbuggyだと思われますが、ぜひ使ってみてください!


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>