4

寻找一种等效的剪切和粘贴策略来复制 vim 的“cut til”。如果我真的知道它在 vim 中的名称,我敢肯定这是可以用谷歌搜索的,但这是我正在寻找的内容:

如果我有这样的文本块:

foo bar (baz)

我在行的开头,我想剪到第一个括号,在视觉模式下,我会这样做:

 ct (

我认为可能有一种方法可以回顾,我认为您可以传递更具体的正则表达式。但无论如何,寻找一些 emacs 等价物来进行这种文本替换。谢谢。

4

3 回答 3

8

以下是三种方式:

  1. 只需键入M-dM-d即可删除两个单词。这将留下最后的空间,所以你必须自己删除它,如果你将这两个词粘贴回其他地方,然后再将其添加回来。
  2. M-zis zap-to-char,它从光标中删除文本,直到并包括您指定的字符。在这种情况下,你必须做一些事情,比如M-2M-zSPC快速到并包括第二个空格字符。
  3. 键入C-SPC设置标记,然后使用 进入增量搜索C-s,键入一个空格以跳转到第一个空格,然后C-s向前搜索下一个空格,RET终止搜索,最后C-w杀死您选择的文本。

就个人而言,我通常会选择#1。

于 2012-04-05T18:42:56.073 回答
5

正如ataylor所说zap-to-char的那样,对zap-to-char的以下修改正是您想要的

(defun zap-up-to-char (arg char)
  "Like standard zap-to-char, but stops just before the given character."
  (interactive "p\ncZap up to char: ")
  (kill-region (point)
               (progn
                 (search-forward (char-to-string char) nil nil arg)
                 (forward-char (if (>= arg 0) -1 1))
                 (point))))

(define-key global-map [(meta ?z)] 'zap-up-to-char)           ; Rebind M-z to our version

顺便说一句,不要忘记它有能力用负前缀向后退

于 2012-04-05T18:46:14.043 回答
3

这听起来像zap-to-char在 emacs 中,M-z默认绑定。请注意,这zap-to-char将剪切所有字符,包括您选择的字符。

于 2012-04-05T18:42:07.990 回答