Оболочка Emacs M-x и переопределение привязок клавиш bash - PullRequest
1 голос
/ 21 июля 2011

Если я правильно понимаю, при запуске bash под M-x shell Emacs переопределяет некоторые привязки клавиатуры bash и может заставить некоторые команды и функции bash работать не так, как в "native bash" (пример см. this нить)

Одной из команд, которые я часто использую в bash, является clear-screen (по умолчанию ограничено Ctrl-l).

Есть ли простой способ попросить Emacs воспроизвести то же поведение в shell-mode, чтобы я мог очистить экран bash в Emacs?

Я знаю, что всегда могу использовать M-x term, чтобы получить реальный терминал, но я бы хотел найти решение для M-x shell

РЕДАКТИРОВАТЬ : Когда я набираю C-l C-l, Emacs перемещает текущую строку в верхнюю часть окна, но как только я ввожу новую команду в bash, окно снова прокручивается до исходного положение.

Спасибо

Ответы [ 2 ]

6 голосов
/ 21 июля 2011

Просто введите M -> , чтобы перейти к нижней части буфера (при необходимости), затем Cl Cl , чтобы переместить текущую строку в верхнюю часть окна.Выглядит так, как будто вы очистили свой экран, но все содержимое, которое было бы стерто, все еще присутствует над верхней частью окна.

РЕДАКТИРОВАТЬ:

Чтобы Emacs не прокручивалОкно, как вы описали, поместите это в ваш .emacs файл:

(remove-hook 'comint-output-filter-functions
             'comint-postoutput-scroll-to-bottom)

Я обнаружил, что поведение также раздражает.

1 голос
/ 21 июля 2011

Вы можете повторно связать Cl в режиме оболочки, чтобы заставить его работать так, как вы хотите:

(define-key shell-mode-map (kbd "C-l")
  (lambda ()
    (interactive)
    (previous-line)
    (end-of-line)
    (let ((start (point))
          (end (goto-char (point-min))))
      (delete-region start end)
      (kill-line)
      (end-of-buffer))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...