Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在所有正在运行的emacs实例中执行命令_Unix_Emacs - Fatal编程技术网

Unix 在所有正在运行的emacs实例中执行命令

Unix 在所有正在运行的emacs实例中执行命令,unix,emacs,Unix,Emacs,我有两个VNC会话,在其中访问相同的项目。 我为多个项目打开了多个emacs会话。 在保存我在VNC1上的工作并使用VNC2后,我需要一种方法在VNC2上运行的每个emacs中运行一个命令“更新所有打开的文件”,以便它与VNC1中发生的更改同步 我已经绑定了F10来执行“恢复所有缓冲区”,所以我需要这个脚本进入每个emacs并进行更新。 因此,我不想去打开每个emacs并按“F10”,而是希望脚本这样做 任何关于如何实现这一点的提示?您可以从这段代码开始,自定义'synchronize-on-t

我有两个VNC会话,在其中访问相同的项目。 我为多个项目打开了多个emacs会话。 在保存我在VNC1上的工作并使用VNC2后,我需要一种方法在VNC2上运行的每个emacs中运行一个命令“更新所有打开的文件”,以便它与VNC1中发生的更改同步

我已经绑定了F10来执行“恢复所有缓冲区”,所以我需要这个脚本进入每个emacs并进行更新。 因此,我不想去打开每个emacs并按“F10”,而是希望脚本这样做


任何关于如何实现这一点的提示?

您可以从这段代码开始,自定义
'synchronize-on-this
函数,以执行任何您想要的操作(现在它只打印一条消息)


只需将F10绑定到写入
同步文件的函数即可。您可以将同步过程中使用的信息存储在该文件中,也可以不存储。

作为替代方案,您可以尝试运行一个Emacs会话,并为每个项目使用新的帧。然后您的
还原所有缓冲区将应用于每个项目。每个项目都足够大,可以有自己的emacs会话。我还使用快捷方式基于文件所在的项目构建/Mercurial Diff,我不想用来自不同项目的许多信息污染日志缓冲区。项目“大到可以拥有自己的emacs会话”是什么意思?那句话对我来说毫无意义。你还提到项目。您是否正在使用任何可用于Emacs的项目库?Chris,忘记我运行多个Emacs会话的原因吧。假设我需要在unix机器上的不同实例中执行命令的是任何其他程序。我正在寻找一个脚本来实现这一点。“假设我需要的是任何其他程序,在unix机器上的不同实例中执行命令。我正在寻找一个脚本来实现这一点。”您正在询问如何进入正在运行的应用程序并在其中执行一些任务。对于这一点没有普遍的解决办法;你必须做一些特定于应用程序的事情。非常有趣,但我可以理解,这到底是如何工作的?假设我在每个VNC中已经有4个emacs会话2,所有会话都访问相同的文件。从VNC1移动到VNC2时,此代码是否自动检测到某些内容已更改并同步?记住,我不会在第二个VNC中打开一个新的emacs会话,所有emacs应用程序都已经打开并保持打开状态。您的问题听起来像是希望在特定时间在每个emacs实例中执行一些命令。如果您真正想要的是恢复所有缓冲区,只需使用
(全局自动恢复模式1)
。。。但是,如果您需要在每个项目中实际执行一些实质性的操作(例如签出文件),您可以这样做来代替
(消息“Have synchronized!”)
。Trey,请跟我讲一会儿。因此,如果我有两个emacs会话打开同一个文件,我在其中一个中更改了该文件,如果我切换到第二个emacs,该文件是否已经用更改自动更新了?是的,全局自动还原模式就是这样。这可能需要几秒钟,但它会发生的。而且,即使没有启用该模式,如果您试图在第二个Emacs中编辑文件,它也会检查磁盘上的文件是否已更改,并向您发出警告。
(defvar synchronize-file "~/.synchronize" )
(defun synchronize-on-this ()
  (when (string-equal (file-truename synchronize-file) 
                     (file-truename (buffer-file-name)))
    (message "Have synchronized!")))

(find-file-noselect synchronize-file)
(global-auto-revert-mode 1)

(add-hook 'after-revert-hook 'synchronize-on-this)