Emacs中实现vim式简单查找 博客分类: Accumulation emacslispvim
程序员文章站
2024-03-21 14:02:04
...
Emacs中实现vim式简单查找
Table of Contents
1 Emacs 中实现 vim 式简单查找
1.1 vim 式简查找
在 vim 中当处于命令模式时,按下 'f' 键可以实现简单查找,即在本行内向后查找 'f' 键后所跟*字符*,并将光标跳转到查找命中处。
写道
如文件有内容如下: "for name in dir(sys):"
如操作序列: 1.在命令模式中按下 'f' 2.按下 'a' 操作完毕后,光标跳转到 'name' 中 'a' 处。
如操作序列: 1.在命令模式中按下 'f' 2.按下 'a' 操作完毕后,光标跳转到 'name' 中 'a' 处。
1.2 Emacs 中实现
在 Emacs 中没有编辑模式的区分,所以无法使用 'f' 等单个字母键完成上述功能,可将此功能绑定到组合键上,如 'C-3'等。 用*Emacs Lisp*实现 vim 式的向后查找,代码如下:
(defun terry-vim-find (char) "vim like find. In vim type 'f' then type a char then find the char in this line." (interactive "k") (if (string= (terry-get-point-string (point)) char) (search-forward char nil t 2) (search-forward char nil t 1)) (goto-char (1- (point))))代码很简单,使用了 Emacs 内置的 search-forward 函数。这里值的注意的一点时,使用 search-forward 时,*如果光标位置的字符与所搜索的字符一样*,则 search-forward 不会继续向后搜索,光标保持不动。 程序中进行了一次判定,当 搜索字符 与 光标位置字符 一样时,使用 search-forward 2次。
1.3 总结
org-mode 不好用。