4

我使用 jEdit 作为文本编辑器,因为它是跨平台的,并且具有我需要的所有功能(Java 正则表达式、按键宏等)。但是,在新计算机上进行设置和同步设置(键盘绑定、文件保存选项等)很痛苦。

任何人都可以建议这样做的好方法吗?理想情况下,它应该在后台同步,可能会写入 Dropbox 文件夹。我已经查看了 jEdit 插件,但似乎没有任何内容。

谢谢!

4

2 回答 2

1

我使用以下宏来清理我的 jEdit 设置目录并将其压缩到我的 Mac 上的 Google Drive 目录:

void delete(String name) {
  path = jEdit.getSettingsDirectory()+"/"+name;
  VFS vfs = VFSManager.getVFSForPath(path);
  session = vfs.createVFSSession(path,view);
  vfs._delete(session, path, view);
  if (session != null) vfs._endVFSSession(session,view);
}

runInSystemShell(view, "cd " + jEdit.getSettingsDirectory());

// clean up files
delete("abbrevs");  // I use SuperAbbrevs
delete("killring.xml");
delete("recent.xml");
delete("perspective.xml");
delete("activity.log");
delete("history");
delete("printspec");
delete("registers.xml");
delete("pluginMgr-Cached.xml.gz");
delete("macros" + File.separator + ".macroManagerCache");   // File.separator = System.getProperty("file.separator")
delete("server");
delete("jedit_quicknote.txt");  // or qn.txt
delete("mirrorList.xml");       // mirrorList can be updated by Options -> Plugin Manager

// clean up directories
delete("jars-cache");
delete("settings-backup");
delete("cache");
delete("DockableWindowManager");
delete("PluginManager.download");
delete("printspec");

runInSystemShell(view, "rm -f ~/Google\\ Drive/doc/jedit.zip; zip -r ~/Google\\ Drive/doc/jedit.zip * -x '*.DS_Store'");

然后我可以运行以下别名来解压缩其他机器上的设置:

alias je_sync="rm -rf ~/.jedit/*; unzip ~/Google\ Drive/doc/jedit.zip -d ~/.jedit/"
于 2016-04-23T19:23:55.417 回答
0

我知道没有内置或插件方式来同步 jEdit 设置。但是所有内容都应该存储在您的设置目录中。(“应该”,因为一些插件可能会在其他地方存储东西,特别是如果它使用设置和其他方式来做东西,比如 git 或 svn 将用户凭据存储在 ~/.subversion/ 等等。设置目录的位置取决于如果您不使用-settings开关来启动 jEdit,则您正在使用 jEdit 的操作系统)。

因此,要同步设置,只需通过 Google Drive、Box、Dropbox 或其他任何方式同步设置目录即可。您甚至可以让 jEdit 通过-settings开关直接使用这些目录,例如,如果您使用的操作系统不能正确支持 Windows 等符号链接。

但请注意,可能会出现严重问题或意外行为。例如。您还将同步最近的文件、最后一个窗口和对话框的位置、最后打开的文件等内容……
更重要的是,如果您在同一设置目录中运行两个实例,jEdit 目前的表现不太好,这肯定也会涵盖通过某种方式同步设置文件夹的情况。

如果您在同一台计算机上的同一设置目录中使用两个 jEdit 实例(不是 windows,真实实例,例如使用 -noserver 打开),则会发生一种情况,并且肯定也会发生在这样的同步目录中:

  • 实例 A 开始运行,读取设置文件并存储它们的最后修改日期
  • 实例 A 写入配置文件 Z 并存储其最后修改日期
  • 实例 B 开始运行,读取设置文件并存储它们的最后修改日期
  • 实例 B 写入配置文件 Z 并存储其最后修改日期
  • 实例 A 想要写入配置文件 Z,但发现它的最后修改日期比它记住的要新。它将向日志发出警告,但仅此而已,并且在重新启动之前不会再保存文件 Z。

因此,如果 Z eg 是属性文件,则在此之后在实例 A 中所做的任何设置更改都将丢失并且不会保存。这发生在每个文件的基础上,取决于哪个实例在两个实例启动后首先写入某个文件,因此一些文件可能被实例 A 锁定,一些文件被实例 B 锁定,这可能会进一步增加混乱。

因此,如果您可以同步最近的文件、上次打开的文件以及其他包含路径的内容等等,并且您确保不会在同一设置目录中同时使用两个 jEdit 实例时间,可以只使用 Google Drive 之类的东西。

于 2016-04-17T22:41:16.990 回答