Por que não consigo ligar Shift- <backspace>?

8

Meu sistema é debian wheezy, tentei fazer o seguinte

(global-set-key (kbd "S-<backspace>") 'evil-shift-left-line)
(global-set-key (kbd "<S-backspace>") 'evil-shift-left-line)
(define-key global-map [S-backspace] 'evil-shift-left-line)

O que eu quero é no modo de inserção incorreta, eu posso excluir a largura de uma guia para a frente em vez de pressionar backspace 4 vezes. A combinação de teclas funciona no meu laptop, mas não na minha área de trabalho. Eu verifico a ligação para a linha de mudança mal-esquerda, ela mudou, mas não funciona, e a ajuda no "shift-backspace" mostra apenas "backspace". No entanto, shift faz efeito em "backspace", "shift-backspace" exclui a palavra anterior em vez de caractere.

Quando insiro "shift-backspace" após "Cq", ele tem a mesma notação "^?" como "backspace" na minha área de trabalho, enquanto no meu laptop o primeiro é "^ @".

Alguma idéia de por que não funciona na minha área de trabalho? Obrigado pela ajuda!

Esta pergunta pode estar relacionada a esta: Shift + Up não é reconhecido pelo Emacs em um terminal

godblessfq
fonte
2
Você está usando o Emacs em um terminal?
Malabarba
Não, estou usando o emacs independente.
godblessfq

Respostas:

6

Curiosamente, você pode tentar vincular a deletechar pseudo-chave .

Quando verifico a ligação da backspaceminha máquina C-h k [backspace], recebo:

DEL(traduzido de <backspace>) executa o comando ... (blá blá blá)

Quando verifico a ligação de shift+ backspacena minha máquina C-h k S-[backspace], recebo:

<deletechar>(traduzido de <delete>) executa o comando ... (blá blá blá)

Portanto, o seguinte funciona na minha máquina:

(global-set-key [deletechar] #'evil-shift-left-line)
Dan
fonte
No meu computador, quando eu checo a ligação da tecla Shift + <backspace> é <backspace>.
godblessfq
2

Eu tenho isso na minha configuração:

(define-key global-map [(shift backspace)] 'backward-delete-whitespace)
(define-key global-map [(shift delete)] 'forward-delete-whitespace)

para fazer shift + backspace / shift + delete matar todos os espaços em branco.


E apenas no caso de alguém precisar dessas funções, aqui estão elas:

(defun backward-delete-whitespace ()
  (interactive)
  (let ((p (point)))
    (re-search-backward "[^ \t\n]+" nil t)
    (forward-char)
    (delete-region p (point))))

(defun forward-delete-whitespace ()
  (interactive)
  (re-search-forward "[ \t\n]+" nil t)
  (replace-match "" nil nil))
mishoo
fonte
1

Agora estou feliz com essa configuração.

(defun my/backspace()
  (interactive)
  (if (string-match "[^[:space:]]+"
                    (buffer-substring-no-properties
     (line-beginning-position) (point))) ;; return nil no match
      (backward-kill-word 1)(evil-shift-left-line)))
godblessfq
fonte