Подтвердить что ты не робот

Вставьте вывод команды оболочки в буфер emacs

Я хочу установить привязку клавиш для вставки даты в буфер. Я написал следующий lisp в моем .emacs файле. Используя date в качестве примера:

;;put the date                                                                  
(global-set-key
 (kbd "C-c C-d")
 (shell-command "date" (current-buffer))
)

Связывание ключей работает хорошо, когда я использую другие команды, такие как 'next-line, но shell-command помещает его в буфер *scratch*, когда читается .emacs и оставляет его на этом.

Возможно, мне нужно использовать shell-command-on-region.

4b9b3361

Ответ 1

Для общего случая вставки любого вывода команды оболочки в текущий буфер вы можете использовать встроенные аккорды клавиатуры:

C-u M-! <shell-command>

который выполняет ту же функцию shell-command, а также вставляет вывод обратно в точку в текущем буфере.

Весь сам по себе ключ может быть сохранен как макрос (и, возможно, назначен ярлыку) для более простого вызова обычных команд оболочки.

Ответ 2

Помог мне мой друг на работе.

(defun put-the-date ()
  (interactive)
  (insert (shell-command-to-string "date")))

(global-set-key
 (kbd "C-c C-d")
 'put-the-date
 )