基本上,我问的是与vim的vb(bbww...)等价的函数。和大众(wwbb...):
我想绑定meta-j和meta-k来标记当前点之前和之后的单词。Simple.el提供了标记字函数,我将其绑定到meta-k。我稍微修改了一下mark-word函数:
(defun mark-backward (&optional arg allow-extend) ;
(interactive "P\np")
(cond ((and allow-extend
(or (and (eq last-command this-command) (mark t))
(and transient-mark-mode mark-active)))
(setq arg (if arg (prefix-numeric-value arg)
(if (< (mark) (point)) -1 1)))
(set-mark
(save-excursion
(goto-char (mark))
(forward-word arg)
(point))))
(t (push-mark
(save-excursion
(backward-word (prefix-numeric-value arg))
(point)) nil t))))
(global-set-key (kbd "M-k") 'mark-word)
(global-set-key (kbd "M-j") 'mark-backward)这有点用了。我想用另一个键撤销一些标记,我该怎么做呢?(例如,在我用M-k标记了一些单词之后,我想使用M-j取消对左边的一些单词的标记。目前,当我按M-j时,emacs继续标记前进)。
发布于 2011-03-07 19:26:01
(defun my-mark-word (N)
(interactive "p")
(if (and
(not (eq last-command this-command))
(not (eq last-command 'my-mark-word-backward)))
(set-mark (point)))
(forward-word N))
(defun my-mark-word-backward (N)
(interactive "p")
(if (and
(not (eq last-command this-command))
(not (eq last-command 'my-mark-word)))
(set-mark (point)))
(backward-word N))
(local-set-key (kbd "M-k") 'my-mark-word)
(local-set-key (kbd "M-j") 'my-mark-word-backward)这应该模拟VIMs的行为(当然还有其他的击键)。
备注:默认情况下, M-j绑定到indent-new-comment-line,这在源代码中编写注释块时非常方便。默认情况下,M-k绑定到kill-sentence。
发布于 2011-03-07 17:37:10
您应该在另一个地方用backward-word替换forward-word。
然而,代码在选择点左侧的单词时仍然存在问题。
Ps。请编辑您的帖子--帖子中的代码几乎无法阅读。
https://stackoverflow.com/questions/5216300
复制相似问题