【问题标题】:Emacs delete up to the beginning of next word (like Vim 'dw')?Emacs 删除到下一个单词的开头(如 Vim 'dw')?
【发布时间】:2014-12-01 01:23:15
【问题描述】:

所以我试图在一行的开头删除一些空格,当我按 M-d 时,我最终删除了比我需要的更多的内容:

   (add-to-list 'load-path
                "~/path-to-yasnippet")
   (require 'yasnippet)
   (yas-global-mode 1)
^ ^ | |__ 想删除到这里 | |___ 光标在这里

我已经查看了几个地方,但都无法完成 Vim 的 dw 命令所做的事情。

例如,Emacs 用于在words 上运行的命令似乎并没有这样做。

【问题讨论】:

  • 这里是另一个杀词和/或杀空格变体的链接:stackoverflow.com/a/20456861/2112489
  • 哇,谢谢你的链接!
  • 切换到邪恶模式是一种选择吗? wikemacs.org/index.php/Evil 你会像在 vim 中那样做。
  • 我已经被诱惑了,因为我的手指上已经有一些 vim ......但还不明白为什么不直接使用 vim 呢??

标签: vim emacs


【解决方案1】:

其实我才发现:

M-\

对我有用,因为我只需要删除空白。

【讨论】:

  • 这个答案可以通过提到这个键绑定(默认)到函数delete-horizontal-space来改进。
【解决方案2】:

对此有很多不同的解决方案,这里有一个:

(defun forward-kill-whitespace-or-word ()
  "If `point' is followed by whitespace kill that.
Otherwise call `kill-word'"
  (interactive)
  (if (looking-at "[ \t\n]")
      (let ((pos (point)))
        (re-search-forward "[^ \t\n]" nil t)
        (backward-char)
        (kill-region pos (point)))
    (kill-word 1)))

编辑: p 应该是 pos。

【讨论】:

  • 符号变量作为值是 void p 我只是将它复制到我的 .emacs eval 区域...它移动光标,它不会删除...
  • 貌似p应该是pos,但是我没试过这个功能。例如,(kill-region pos (point))
【解决方案3】:

有几种方法可以理解你想要做什么:

  1. 删除行首的空格
  2. 删除行首的所有字符
  3. 删除直到但不包括下一个单词开头的所有字符,无论您在一行中的哪个位置以及下一个单词之前是否有任何换行符
  4. 模仿 Vim 的 dw 命令的行为

我选择解决第 3 项,因为这是我自己想做的。

我想要执行的动作相当于下面的一系列命令:

  • 设置标记命令
  • 转发词
  • 落后字
  • 杀死区域

这就是我所做的:

  • 开启宏录制
  • 执行了命令(通过它们的键绑定,但您也可以通过它们的函数名执行它们)
  • 已保存宏
  • 将名称与该宏关联
  • 将宏内容作为函数复制到我的初始化文件中
  • 将函数与键绑定相关联

宏内容如下:

;; kill all characters up to but not including the start of the next word ;; (unlike kill-word, which kills the next word as well) (fset 'my-delete-to-start-of-word (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([67108896 C-right C-left delete] 0 "%d")) arg)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2021-02-12
    • 2012-07-06
    • 2015-06-11
    • 2018-05-05
    • 2012-08-21
    • 2011-03-27
    相关资源
    最近更新 更多