Вставьте вывод команды оболочки в буфер 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
.
Ответы
Ответ 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
)