How to create a buffer with customized behavior? / How to create a buffer that acts like a TUI?
What vimscript magic allows one to create buffers with highly customized behavior, that effectively act like a TUI, such as those presented by NerdTree or other file explorer plugins and Gundo or o...
https://vi.stackexchange.com/questions/14832/how-to-create-a-buffer-with-customized-behavior-how-to-create-a-buffer-that-a
BufferList読んでみる
273行
この量なら読める。
インクルードガード
初期値決め
BufferList関数
__BUFFERLIST__
という Buffer を専用のバッファとして扱う。
bufnr
でバッファ名からバッファ番号を得て、bufexists
で存在を確認する。
bufnr
には特別な名前を指定出来て以下のような効果があるようだ。
バッファを作る
作ったバッファがアクティブになり、以降の操作対象になる。
色決め
Buffer構築
setlocal nomodifiable
で編集不可に
操作を設定
バッファローカルに map
を設定する。
map
がキーボード・マウス入力へのコールバック設定になっているのか。なるほど。
左右への動きを封じてある
その他編集系の機能を封じる
移動
情報収集
:set nomodifiable
で調べてみた
- http://tyru.hatenablog.com/entry/20101107/modifiable_and_readonly
- https://vimconf.org/2018/slides/Effective_Modern_Vim_scripting_at_vimconf2018_for_PDF.pdf
- https://vi.stackexchange.com/questions/17140/how-to-create-a-buffer-like-a-fugitive-temporary-buffer
:set buftype=nofile
が出てきた
- ’nobuflisted’ なバッファの作り方
- https://vi.stackexchange.com/questions/14832/how-to-create-a-buffer-with-customized-behavior-how-to-create-a-buffer-that-a
- http://learnvimscriptthehardway.stevelosh.com/
NERDTree解読
左側にどうやって split
して開くのか
ファイルを選択して開くとき開き先をどうやって決めるのか
pythonに移植できんやろか
つまり、Pythonでvimから見える関数を定義できれば勝つるのでは。
vim.eval
とかあるな・・・。いけるのでは?
慣れたら全部 vim script
で書くようになりそうだけど、練習に移植してみよか。
nvimで、
:py3 import sys; print(sys.version)
としたら
3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32 bit (Intel)]
と返ってきた。なるほど。
- [Pythonでvim pluginを書く https://qiita.com/zakuro9715/items/98449dd4c6b9e1d61ef5]