find-fileでHelmみたいにC-lでディレクトリを遡る
Helmではhelm-find-filesなどファイル名を入力する場面でC-lおよびC-.にhelm-find-files-up-one-levelがアサインされており、一個上のディレクトリにさくっと遡れる。verticoでも同じように操作したい。 このコマンドは別にverticoに依存はしてないので、適切なキーマップにアサインしてやればたぶん動く。
code:el
(defun my-filename-upto-parent ()
"Move to parent directory like \"cd ..\" in find-file."
(interactive)
(let ((sep (eval-when-compile (regexp-opt '("/" "\\")))))
(save-excursion
(left-char 1)
(when (looking-at-p sep)
(delete-char 1)))
(save-match-data
(when (search-backward-regexp sep nil t)
(right-char 1)
(filter-buffer-substring (point) (line-end-position)
(leaf vertico :ensure t
:bind (:vertico-map (("C-l" . my-filename-upto-parent)))
:config
(vertico-mode +1))
これでC-lで一個上に遡れるようになってます。
https://gyazo.com/579e3ab5d69e6fbd4c1d76485c02fe5c
これを応用してやればhelm-find-filesみたいにカーソル左右でディレクトリを遡ったりカーソル位置のファイル/ディレクトリに埋めたりするのも簡単ですね。