gpt4 book ai didi

emacs - emacs中的Ctrl-backspace删除太多

转载 作者:行者123 更新时间:2023-12-04 17:47:40 26 4
gpt4 key购买 nike

emacs中的ctrl-backspace会删除所有空白是很好的。但是,它并不止于此!它似乎只有删除至少一个单词后才会停止。例如,这意味着在这里使用它:

foo(bar)
<cursor>

结果是
foo(<cursor>

真是傻瓜(恕我直言)!我想要的行为类似于以下内容:
  • 如果光标之前有空格,请删除所有空格(然后停止!)。
  • 如果光标之前有一个单词,请删除该单词。
  • 否则,删除光标之前的所有字符的所有相邻重复。

  • 这似乎是一个更合理的Ctrl-Backspace,但是说实话,如果我能得到(1),那将是一个巨大的改进。是否有用于此目的的包装或设置?我真的不了解emacs lisp,但也许会指出相关API的位置...

    最佳答案

    我使用以下intellij样式的智能后向杀手字

    (defun aborn/backward-kill-word ()
    "Customize/Smart backward-kill-word."
    (interactive)
    (let* ((cp (point))
    (backword)
    (end)
    (space-pos)
    (backword-char (if (bobp)
    "" ;; cursor in begin of buffer
    (buffer-substring cp (- cp 1)))))
    (if (equal (length backword-char) (string-width backword-char))
    (progn
    (save-excursion
    (setq backword (buffer-substring (point) (progn (forward-word -1) (point)))))
    (setq ab/debug backword)
    (save-excursion
    (when (and backword ;; when backword contains space
    (s-contains? " " backword))
    (setq space-pos (ignore-errors (search-backward " ")))))
    (save-excursion
    (let* ((pos (ignore-errors (search-backward-regexp "\n")))
    (substr (when pos (buffer-substring pos cp))))
    (when (or (and substr (s-blank? (s-trim substr)))
    (s-contains? "\n" backword))
    (setq end pos))))
    (if end
    (kill-region cp end)
    (if space-pos
    (kill-region cp space-pos)
    (backward-kill-word 1))))
    (kill-region cp (- cp 1))) ;; word is non-english word
    ))

    (global-set-key [C-backspace]
    'aborn/backward-kill-word)

    关于emacs - emacs中的Ctrl-backspace删除太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28221079/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com