Есть ли удобный общий способ «захватить» эхо-результат команды в Emacs (из M-: или M-!)?

Иногда я хочу вставить результат команды Emacs (который был эхом в области эха) в другой буфер или другую запущенную X-программу. Поэтому я хотел бы положить его в кольцо убийства. Что было бы удобным способом сделать это?

Например: я могу запустить запрос с помощью команды оболочки в режиме ожидания, например :! rpm -qf (чтобы узнать, какой пакет принадлежит выбранному файлу в списке каталогов), а затем хотите вставить результат в другое место.

Или, еще один пример: если мне нужно имя файла текущего буфера (например, есть ли в Emacs пользовательский интерфейс, позволяющий удобно «захватить» имя файла буфера? ), И для этого еще не было предопределенной команды, я мог бы по крайней мере, сделать M-: (buffer-file-name) а затем использовать этот способ общего назначения для копирования показанного результата в kill-ring, чтобы вставить его позже. (Конечно, я мог бы eval (kill-new (buffer-file-name)) , но этот пример здесь, чтобы проиллюстрировать, какой способ общего назначения сделать захват эхо-результата, который я ищу.)

3 Solutions collect form web for “Есть ли удобный общий способ «захватить» эхо-результат команды в Emacs (из M-: или M-!)?”

Тип Cu перед M-: или M-! чтобы получить результат, вставленный вместо отправки в область эха.

Чтобы получить вещи прямо в кольцо убийства, вам нужно баловаться в Elisp. Что-то вроде этого (непроверено):

 ;;; kill ring version of M-! (defun shell-command-to-kill-ring (command) (interactive (list (read-shell-command "Shell command: " nil nil (let ((filename (cond (buffer-file-name) ((eq major-mode 'dired-mode) (dired-get-filename nil t))))) (and filename (file-relative-name filename)))) current-prefix-arg shell-command-default-error-buffer)) (kill-new (shell-command-to-string command))) ;;; kill-ring version of M-: (defun eval-expression-to-kill-ring () (interactive) (call-interactively 'eval-expression) (kill-new (car values))) 

Все сообщения, эхом в области сообщений, сохраняются в буфере *Messages* , поэтому просто переключитесь на него ( Ch e , view-echo-area-messages ) и выберите то, что вы хотите.

Если вы хотите получить значение, которое не зависит от текущего буфера, вы также можете переключиться на буфер *scratch* . Введите свое выражение и нажмите Cj ( eval-print-last-sexp ).

Небольшое улучшение по решению гейкозавра. Это делает правильную вещь, даже если выражение оценивается чем-то другим, кроме строки.

 (defun c5-eval-to-kill-ring () (interactive) (kill-new (with-output-to-string (princ (call-interactively 'eval-expression))))) (global-set-key (kbd "C-;") 'c5-eval-to-kill-ring) 
  • Текстовый редактор с выбором размера шрифта для определенных человеческих языков (например, Unicode Block), например, Devanagari
  • Сделать работу hunspell с emacs и немецким языком
  • latexmk с emacs работает только один раз вместо двух
  • Как ключи передаются на emacs и терминал gnome?
  • Эффект, если какая-либо из изменяющихся переменных среды LD_LIBRARY_PATH на шрифтах emacs?
  • Как настроить файл инициализации .emacs?
  • Сноски в режиме emacs org: как отключить , но сохранить ?
  • Текст прямоугольного прямоугольника в jacged в emacs
  • Загрузите мой .profile для bash в буфер обмена Emacs? (многорежимный режим)
  • Как изменить разрешение записи на текущий буфер в emacs?
  • Добавление и удаление текста из одного места в каждой строке буфера emacs
  • Interesting Posts

    Как я могу настроить sudo только для одной попытки?

    FreeBSD перезагружается во время установки и оставляет недопустимую установку

    Как найти и фильтровать определенный столбец в CSV-файле?

    Почему веб-камера не может видеть uvcdynctrl?

    Можете ли фанатизировать файлы изменений перед доступом к другим приложениям?

    Git Bash для Ubuntu / Linux и Windows требует перезагрузки ssh-agent

    Как настроить все зависимости перед установкой?

    Postfix: адрес получателя отклонен из других доменных зон

    Паровые сбои при запуске на OpenSUSE

    Как узнать, какой каталог занимает большинство дисков?

    получение «плохой строки init» при наборе с wvdial

    Создайте файл с потоковым интерфейсом

    Сделать Linux запретить двоеточия в именах файлов на разделах NTFS

    Как использовать команду tr для замены: полные остановки, восклицания и вопросительные знаки, за которыми следует пробел, с символами новой строки?

    Понимание passwd -keep-tokens

    Linux и Unix - лучшая ОС в мире.