将shell命令的输出插入emacs缓冲区

将shell命令的输出插入emacs缓冲区,emacs,Emacs,我想设置一个键绑定,将日期插入缓冲区。我在.emacs文件中编写了以下lisp。以日期为例: ;;put the date (global-set-key (kbd "C-c C-d") (shell-command "date" (current-buffer)) ) 当我使用其他命令(如'next-line)时,键绑定可以正常工作,但是shell命令将在读

我想设置一个键绑定,将日期插入缓冲区。我在
.emacs
文件中编写了以下lisp。以日期为例:

;;put the date                                                                  
(global-set-key
 (kbd "C-c C-d")
 (shell-command "date" (current-buffer))
)
当我使用其他命令(如
'next-line
)时,键绑定可以正常工作,但是
shell命令
将在读取.emacs时将其放入
*scratch*
缓冲区并保持该状态


也许我需要在区域上使用
shell命令

我的一个工作朋友帮了我

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

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

对于将shell命令的任何输出插入当前缓冲区的一般情况,可以使用内置键盘和弦:

C-u M-! <shell-command>
C-um-!
它运行相同的
shell命令
函数,还将输出插回当前缓冲区中的点


整个按键笔划本身可以保存为宏(也可能分配给快捷方式),以便更轻松地调用常见的shell命令。

无需调用shell来获取可以在emacs中获得的内容:(插入(格式时间字符串“%Y-%m-%d%H:%m:%S”))谢谢,但我只是用它作为一个shell脚本的例子,输出一些字符串。。。可能是“echo hi”或“ls”真的…
(全局设置键(kbd“C-C-d”)(lambda()(交互式)(insert(shell命令到字符串“date”)))
使用匿名函数,更简洁。对于邪恶模式,人们:
(定义键邪恶正常状态映射(kbd“SPC f d”)(lambda()(交互式)(insert(shell命令到字符串“date+%F_u%T”))
@sjas实际上我更喜欢使用单独的命令和键绑定,尽管额外的长度很小。1)这是内置函数和大多数包使用的模式。2) 浏览keymap(
C-h m
或类似功能)将显示有用的概览,而不是匿名功能。3) 您可以在浏览可用功能时找到新命令,例如在
M-x
下使用制表符完成时。当运行
.emacs
时,将计算
(当前缓冲区)
。您希望使用
(shell命令“date”t)
将其插入到调用命令时当前的缓冲区中,或将其封装在
defun
中,以便在执行函数时对其进行评估。虽然某些情况下最好通过删除末尾的换行符(例如在ERC、rcirc等中)来实现在这种情况下,请转到行/输出(C-e)的末尾,然后删除换行符隐藏字符:C-d(此添加项来自Mickery Petersen的Mastering Emacs站点)。这是有史以来最好的。天啊。这立刻让我的生活变得令人敬畏。