代码之家  ›  专栏  ›  技术社区  ›  hatmatrix

区域高亮显示时仅删除一个字符

  •  11
  • hatmatrix  · 技术社区  · 15 年前

    我找不到设置,防止删除整个地区,当你有突出显示,你点击退格。。。(我只希望它删除一个字符,即使区域高亮显示。)我已经有了

    (delete-selection-mode 0)
    

    '(cua-delete-selection nil)
    

    6 回复  |  直到 15 年前
        1
  •  5
  •   hatmatrix    15 年前

    找到了:

    (setq delete-active-region nil)
    

    这就是答案。谢谢大家和我一起努力!

        2
  •  2
  •   R. P. Dillon    15 年前

    Emacs有不同的行为,这取决于高亮显示是用鼠标还是键盘完成的。

    即使在 transient-mark-mode ,如果设置标记并移动点,则使用backspace不会删除区域。 delete-selection-mode

    使用鼠标高亮显示区域时,无论 删除选择模式 ,使用backspace将删除用鼠标高亮显示的区域。根据本手册第25.1.1节:

    区域并停用标记;此行为遵循其他用户建立的约定 当你以其他方式设置区域时应用, 包括班次选择(*注意班次选择::)。”

    shift-select-mode 还是简单地使用标记和点?

        3
  •  1
  •   Déjà vu    15 年前

    0

    (setq delete-selection-mode nil)
    
        4
  •  1
  •   phils    15 年前

    cua-mode 处理得不好。保持该模式而不出现此问题的最简单方法似乎是重新定义cua键映射(请参阅) cua--init-keymaps cua-delete-region

    (add-hook 'cua-mode-hook 'my-cua-mode-hook)
    (defun my-cua-mode-hook ()
      (define-key cua--region-keymap [remap delete-backward-char] 'delete-backward-char)
      (define-key cua--region-keymap [remap backward-delete-char] 'backward-delete-char)
      (define-key cua--region-keymap [remap backward-delete-char-untabify] 'backward-delete-char-untabify)
      (define-key cua--region-keymap [remap delete-char] 'delete-char))
    
        5
  •  1
  •   Pedro Rolo    15 年前

    显然,这使得它可以很好地工作的退格。即使在cua模式下:

    ;; Let backspace and delete be defined as usual if
    ;; nothing is highlighted, otherwise the marked region is deleted
    (defun kill-something() (interactive)
      (if (and mark-active transient-mark-mode)
          (kill-region (point) (mark)) 
        (backward-delete-char-untabify 1)))
    ;;(global-set-key [delete] 'kill-something)
    (global-set-key [backspace] 'kill-something)
    

    This code was found here.

        6
  •  1
  •   J..y B..y    13 年前

    添加 (delete-selection-mode nil) 添加到配置文件。

    从Emacs内的文档:

    delete selection mode是一个交互式编译的Lisp函数 `德尔塞尔'.

    切换删除选择模式。使用prefix ARG,打开Delete Selection 如果ARG为正,则模式打开;如果ARG为非正,则模式关闭。

    活跃。否则,键入的文本只在点插入,而不考虑