欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Emacs中实现vim式简单查找

程序员文章站 2022-07-16 13:34:36
...

Emacs中实现vim式简单查找

1 Emacs 中实现 vim 式简单查找

 

1.1 vim 式简查找

在 vim 中当处于命令模式时,按下 'f' 键可以实现简单查找,即在本行内向后查找 'f' 键后所跟*字符*,并将光标跳转到查找命中处。

写道
如文件有内容如下: "for name in dir(sys):"
如操作序列: 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 不好用。

Date: 2013-03-27T15:45+0800

Author: Guotf

Org version 7.9.2 with Emacs version 24

Validate XHTML 1.0
相关标签: emacs lisp vim