当我执行'编译时,如何自动给出当前缓冲区的文件名?在Emacs中执行命令?

时间:2015-09-06 10:34:39

标签: c++ emacs compilation keymapping

正如您所知,我们可以看到' make -k'当我们执行' M-x编译时命令'在emacs c ++模式中。

但是,现在我正在研究一些boost库,所以在编写示例代码之后我必须经常编译单个文件。 所以,为方便起见,我一直这样做。

(1) make an alias in shell init file for g++ compile command.
    alias c="g++ -g -Wall -O0 -std=c++11"
(2) map 'M-x compile' command to Function Key F9 in .emacs
    (global-set-key [f9] 'compile)
(3) write c++ code
(4) press F9 and modify filename to current open file

例如,您可以看到'编译命令:c vvv.cpp'在下面的屏幕截图中。 (这个屏幕截图只是我为这个问题编写的一个简单代码。 ' C'是编译命令和选项的别名) 但是,这个开放的文件名实际上是' vector1.cpp',所以' vvv.cpp'应该由' vector1.cpp'。

自动替换

enter image description here

我认为这不错。 但是,我想找到一种方法,我不必修改当前的文件名。 "只需按F9和RET,即可编译当前文件。"这正是我想要的。

我能做出更好的想法或方法吗? 或者请告诉我你最好的按键压缩方式。 感谢。

1 个答案:

答案 0 :(得分:2)

EmacsWiki有一个很好的部分,解释了如何自定义compile命令:Compile Command

在您的情况下,您可以在c ++模式中添加一个钩子,以根据需要定义compile-command变量。按照wiki上的示例:

(add-hook 'c++-mode-hook
  (lambda ()
    (set (make-local-variable 'compile-command)
         (format "g++ -g -Wall -O0 -std=c++11 %s" (buffer-name)))))

将此代码段添加到.emacs应该可以解决问题。