几天前我开始使用emacs作为我的主编辑,我正在收集我需要的所有自定义项.
我给它的主要用途是在远程Linux机器(RHEL 5)上开发C项目.到目前为止,我使用普通的vim(仅作为文本编辑器)和一堆shell脚本,有一天我决定尝试使用emacs.到目前为止,我喜欢它.
但作为一个缺点,我看到设置运行emacs的环境还有很长的路要走,而不是直接在开发机器上使用它(并在我使用的每台机器上设置环境)我会尝试使用它从我的笔记本电脑进行远程开发.
我知道TRAMP,但据我所知只编辑远程文件.最大的障碍是通过一次击键在远程机器上运行shell命令(我绑定了F5以在远程机器的emacs上运行自定义编译命令).
如何使用单个emacs击键在远程计算机上运行shell命令?你知道完成远程开发的其他任何提示和技巧吗?
TRAMP支持远程机器(文件所在的)上的编译和调试.这应该是自动的并且相对无缝.查看远程进程的文档.
别担心.只需按一下键,您就可以在Emacs中运行任何内容.其他人已经注意到你可以用TRAMP优雅地做到这一点,但如果这不适合(无论出于何种原因),你也可以使用以下方法烹饪自己的功能:
(defun arbitrary-remote-command () (interactive) (shell-command "ssh user@remotehost arbitrary-command")) (global-set-key (kbd "") 'arbitrary-remote-command)
在进行远程开发时,我使用screen
它可以在按几个键时提供多个虚拟远程终端.这对我来说是不可或缺的.它不仅提供虚拟终端,而且如果您的连接因任何原因而丢失,您的会话也会保留在服务器上.
有关入门的详细信息,请参阅GNU Screen Survival Guide问题screen
.
我通常有一个终端打开源控制操作,一个用于编辑,一个用于编译(我只需要切换到它并点击UpArrow + Enter),一个用于调试.根据我正在处理的环境和应用程序,我可能有更多或更少,但这是一般布局.
来自Trey Jackson的答案很好,但Matthew Flaschen的答案实际上对我有所帮助.
我找不到让TRAMP做编译的方法,但不小心我找到了命令remote-compile.
现在我只是将这些行添加到我的.emacs中:
(setq remote-compile-user "root") (setq remote-compile-host "localhost -p 3000") ;This is just when tunneling (setq compile-command " cd /usr/src/nexus/traffic && ./builder.sh compile ; cat builder.log") (global-set-key (kbd "") 'remote-compile)
在做任何事情之前,使用ControlMaster设置ssh连接,我不必输入密码.
总结:
编辑远程文件:TRAMP
多个终端保存状态:SCREEN
定义emacs键绑定以执行远程命令:请参阅Matthew Flaschen响应
远程编译:使用ControlMaster命令远程编译
我认为这涵盖了进行远程开发的一些重要行动.