我目前正在使用 Emacs 并尝试使用它进行 Rails 开发,有一件事我经常在 Vim 中做,我想知道 Emacs 中是否存在等效的东西,或者是否存在替代的工作流程来实现我需要的行为。
Vim 中的命令是
:map ;t :!rspec --no-color %<cr>
本质上,这映射了一个组合键以在当前缓冲区所代表的文件上运行 bash/shell 命令(%
在运行时扩展为文件名,<cr>
末尾只是一个回车符来执行命令)。
当我需要时,我会映射各种随机的小命令,我真的很怀念这种方法的即时性。
我怎样才能实现类似的事情?
答案1
此函数提示输入命令并在当前缓冲区文件上运行该命令。如果没有文件与当前缓冲区关联,则会出错
(defun shell-command-on-buffer-file ()
"prompts for a command and executes that command on to the associated
file of current buffer. if no buffer is associated gives an error"
(interactive)
(or (buffer-file-name) (error "no file is associated file to this buffer"))
(let* ((my-cmd (read-shell-command "Command to run: "))
(cmd-to-run (concat my-cmd " " (buffer-file-name))))
(shell-command cmd-to-run)))
和往常一样,emacs 会保存你迄今为止输入的命令的历史记录,可以使用 Mp,Mn 访问这些命令