Evil で縦方向 f/F (リピート不可 😢)
Emacs Advent Calendar 2021 9 日めの記事です。
デモ
うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
Firefox では画像をクリックしないと gif 画像がアニメーションしませんでした……
コンテキスト
語 | 解説 |
---|---|
Evil | Vim 再現プラグイン |
f/F | 横方向ジャンプ (Vim バインディング) |
縦方向 f/F | 縦方向ジャンプ |
コード
実装
1 行ずつ移動して目当ての文字を探します。また evil-read-key
のおかげで digraph も読めます:
(defun toy/vf--impl (target-char delta-move)
(let* ((start-point (point))
(start-col (current-column))
(jump-point nil))
(while (and (not jump-point)
(eq 0 (forward-line delta-move)))
(when (and (eq (move-to-column start-col) start-col)
(eq (char-after) target-char))
(setq jump-point (point))))
(goto-char (or jump-point start-point))
jump-point))
(defun toy/vf (&optional target-char)
"Searches forward a character in the same column. Returns the point on jump or nil on failure."
(interactive)
(toy/vf--impl (or target-char (evil-read-key)) 1))
(defun toy/vF (&optional target-char)
"Searches backward a character in the same column. Returns the point on jump or nil on failure."
(interactive)
(toy/vf--impl (or target-char (evil-read-key)) -1))
しかし ;
キーで検索のリピート……はできないなんちゃって実装です。
Tip
縦方向ジャンプ後にカーソルを画面中央へ持っていくキーバインディング例:
(defun toy/force-center()
(evil-scroll-line-to-center (line-number-at-pos)))
(evil-define-key 'normal 'global
" v" (lambda () (interactive) (when (toy/vf) (toy/force-center)))
" V" (lambda () (interactive) (when (toy/vF) (toy/force-center))))
ご閲覧いただきありがとうございました
ベター版をお持ちの方はお知らせください
_(._.)_
真の姿
+---------------------------------+
| ベター版をお持ちの方はお知らせください |
+-------+---------+----------------+
| |
\__(._.)__/
| |
\ \
\ \
\ \
\ \
\ \
\\
\
+---------------------------------+
| ベター版をお持ちの方はお知らせください |
+-------+---------+----------------+
| |
\__(._.)__/
| |
\ \
\ \
\ \
\ \
\ \
\\
\
Author And Source
この問題について(Evil で縦方向 f/F (リピート不可 😢)), 我々は、より多くの情報をここで見つけました https://qiita.com/toyboot4e/items/9308e743d317dd5aca87著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .