-
はじめに
telescope.nvimはそれ自体に既に多くのものをFuzzyFindする機能が備わっています。拡張も作られており私が愛用しているCLIツールにも既に拡張が作られています。
どうにかして、オリジナルの拡張を作れないか...。fuzzy finderは一覧表示してそれを絞り込む機能です。一覧表示するもの...。AWS
という動機で作りました。(一個人でやるにはあまりにも巨大な壁なので、自分に必要なEC2へのAWS Session Managerによる接続だけとなっています。)
-
拡張の作り方
公式に拡張の作り方が記載されています。
また、helpにはtelescope.nvimの構成図記載されています。簡単な拡張を作るだけなら全て理解する必要はないため、比較的簡単に動作するところまで作れると思います。
最低でも以下のことを実現したい、という大まかな流れの理解が必要です。- Pickerを作成する(FuzzyFindのUIを作ります)
- FinderでFuzzyFind対象を抽出
- EntryMakerでUIに表示するデータを整形する
- Attach Mappingで選択した行に対するアクションを決める
PreviewerやSorterはtelescope.nvim全体の設定を流用することも出来ます。なので肝になるのはFinder、特にEntryMakerとEntryManagerです。(builtin.commandsが結構凝った表示をしているので興味があれば参考までに。)
┌───────────────────────────────────────────────────────────┐ │ ┌────────┐ │ │ │ Multi │ ┌───────+ │ │ │ Select │ ┌───────┐ │ Entry │ │ │ └─────┬──* │ Entry │ ┌────────+ │ Maker │ │ │ │ ┌───│Manager│────│ Sorter │┐ └───┬───* │ │ ▼ ▼ └───────* └────────┘│ │ │ │ 1────────┐ 2───┴──┐ │ │ │ ┌─────│ Picker │ │Finder│◄────┘ │ │ ▼ └───┬────┘ └──────* │ │ ┌────────┐ │ 3────────+ ▲ │ │ │Selected│ └───────│ Prompt │─────────┘ │ │ │ Entry │ └───┬────┘ │ │ └────────* ┌───┴────┐ ┌────────┐ ┌────────┐ │ │ │ ▲ 4─────────┐│ Prompt │ │(Attach)│ │Actions │ │ │ ▼ └──► │ Results ││ Buffer │◄─┤Mappings│◄─┤User Fn │ │ │5─────────┐ └─────────┘└────────┘ └────────┘ └────────┘ │ ││Previewer│ │ │└─────────┘ telescope.nvim architecture │ └───────────────────────────────────────────────────────────┘
出典: GitHub: nvim-telescope/telescope.nvim/docs/telescope.txt
- Pickerを作成する(FuzzyFindのUIを作ります)
-
telescope.nvimからEC2へAWS Session Managerで接続するプラグインを作りました。
GitHub lunarxlark/telescope-aws.nvim
正直、他の方が使うことを想定して作っていません。こういうことも出来るんだよってことをお伝えしたかったです。 仰々しい名前の割に掲題のことしか出来ませんし、aws credentialsもnvim起動時のdefaultのみです。ECSへの接続をやりたいのですが、一覧表示 -> 選択を何度か繰り返さないといけないことに躓いて頓挫しています。 -
Funmnv
ubagbhun RagelZnxrejb ubevfntrgnxnggnaqrfhxrqb znavnvznfraaqrfuvgn.
fbabhgv PbqrCvcryvarab wvxxbhgbxnjb lnevgnvgbbzbggrznfhabqr, fbabgbxvav nengnzrgr oybtavqrzb
xnvgrvxhlbgrvqrfh.gnoha.xvggb.
zbgbargn : uggcf://tvguho.pbz/aivz-gryrfpbcr/gryrfpbcr.aivz/oybo/znfgre/qbp/frperg.gkg