首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs -将单词向前和向后标记

Emacs -将单词向前和向后标记
EN

Stack Overflow用户
提问于 2011-03-07 13:49:35
回答 2查看 2.4K关注 0票数 1

基本上,我问的是与vim的vb(bbww...)等价的函数。和大众(wwbb...):

我想绑定meta-j和meta-k来标记当前点之前和之后的单词。Simple.el提供了标记字函数,我将其绑定到meta-k。我稍微修改了一下mark-word函数:

代码语言:javascript
复制
 (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继续标记前进)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-07 19:26:01

代码语言:javascript
复制
(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

票数 3
EN

Stack Overflow用户

发布于 2011-03-07 17:37:10

您应该在另一个地方用backward-word替换forward-word

然而,代码在选择点左侧的单词时仍然存在问题。

Ps。请编辑您的帖子--帖子中的代码几乎无法阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5216300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档