68 votes

Commande pour effacer shell tout en utilisant le shell emacs

Existe-t-il une commande intégrée pour effacer shell tout en utilisant shell dans emacs? s'il vous plaît, faites-moi savoir. Sinon, quelqu'un a-t-il une fonction elisp pour atteindre le même objectif? Je ne suis pas bon en elisp.

Merci.

87voto

Tyler Points 6320

Des Options à envisager:

  1. C-l permettra de recentrer la mémoire tampon. En appuyant à plusieurs reprises les cycles de la mémoire tampon, de sorte que le point s'affiche en haut, au milieu ou en bas de la mémoire tampon. Quand il s'arrête en haut, le tampon dirait qu'il a été effacé, bien que tout le texte est toujours là, hors de la vue.

  2. C-x h marques l'ensemble de la mémoire tampon, après quoi C-w le tue. Cela tue le dernier invite en tant que bien, mais au bout de saisir la commande suivante vous obtenez l'invite du dos.

  3. Vous pouvez également utiliser erase-buffer, ce qui n'est pas lié à une clé par défaut, mais il est facile à faire (vous pouvez également utiliser M-x erase-buffer:

    (defun my-shell-hook ()
      (local-set-key "\C-cl" 'erase-buffer))

    (add-hook 'shell-mode-hook 'my-shell-hook)

Qui le lie à l' C-c l; vous pouvez choisir ce que vous aimez.

  1. Une solution rapide pour re-créer votre invite, après compensation est possible:
    (defun my-clear ()
      (interactive)
      (erase-buffer)
      (comint-send-input))

    (defun my-shell-hook ()
      (local-set-key "\C-cl" 'my-clear))

    (add-hook 'shell-mode-hook 'my-shell-hook)

Après que vous avez été en utilisant emacs pour un temps, de marquage et de tuer des régions devient naturel, de sorte que vous trouverez peut-être la première option est assez. Si non, la dernière option est la plus proche de ce que vous voulez.

EDIT: je viens de trouver ce sur emacs wiki, c'est mieux que mon option 4:

(defun my-clear ()
  (interactive)
  (let ((comint-buffer-maximum-size 0))
    (comint-truncate-buffer)))

8voto

Jesus Ramos Points 15798

Autant que je sache, vous ne pouvez pas effacer quand vous démarrez en tant que shell Mx, mais si vous utilisez le terme Mx, vous obtenez un terminal entièrement fonctionnel dans lequel clear fonctionne comme prévu. Je peux me tromper sur ce point cependant, mais personnellement, j’utilise le terme Mx maintenant, car il fonctionne pleinement.

4voto

Aborn Jiang Points 11

Si vous trouvez, vous ne pouvez pas utiliser erase-buffer et montre que le texte est en lecture seule. Vous pouvez utiliser la fonction suivante de remplacement.

   (defun eshell/clear ()
  "Hi, you will clear the eshell buffer."
  (interactive)
  (let ((inhibit-read-only t))
    (erase-buffer)
    (message "erase eshell buffer")))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X