9

下面用粗体表示的问题。这是一个编程问题,所以不要草率下结论并投票结束。

我是一名 C++ 程序员。我使用 OS X / quicksilver或 ubuntu / compiz / gnome作为我的桌面。我尽量不触摸鼠标,我使用多个桌面,我使用从键盘驱动的这两个桌面。对于编程,我使用 bash 和 vim。

由于我是一名 C++ 程序员,我需要参考分散在各处的文档,例如 STL / Boost / CMAKE / zeromq / protocol buffers / Mongodb / rapidJson / luajit 等等。

跳到各种参考手册是实时下沉/心理思维过程的破坏者。也许您不相信这确实是一个问题,但是如果您使用 boost 中的多个库,而没有代码完成,您会意识到这确实是一个问题。 人们如何管理他们的参考手册链接以及跳转到参考手册的最快方法是什么?标准的浏览器书签不是答案,无论您建议什么,都应该以尽可能少的击键次数来完成,或者从信息需要合成到信息需要满足的最低延迟。

也许是自定义浏览器,或者我不知道的强大插件?对于目录导航,我使用 vim 的NERDTree,也许是类似的东西?例如,我应该能够输入 boost-filesystem 并能够直接跳转到 boost-filesystem 的代码参考页面。

4

3 回答 3

4

如果您的文档引用具有明确定义的 URI,您可以创建一个小程序,在给定文档 ID 和一些实体标识符的情况下自动构建正确的 URI。

例如,我编写了一个小的Ubiquity命令,它允许我快速打开任何 Qt 实体的最新文档,只需切换到 Firefox,输入ctrl+space以弹出 Ubiquity 控制台,然后输入qt QSomeClass.

以下是 Ubiquity 命令的完整代码(如果您已经安装了 Ubiquity,您可以订阅此空白页面上的命令提要):

CmdUtils.makeSearchCommand({
  names: ["qt"],
  author: {name: "Luc Touraille"},
  url: "http://doc.qt.nokia.com/main-snapshot/{QUERY}.html",
  icon: "http://qt.nokia.com/favicon.ico",
  description: "Searches the Qt Documentation for your word."
});

如您所见,它非常简单,可以很容易地适应其他在线文档,只要 URL 结构良好

编辑

这是一个更通用的版本,您可以根据自己的需要进行调整(您只需要填写模板映射):

var urlTemplates = {
  "QT": "http://doc.qt.nokia.com/main-snapshot/{QUERY}.html",
  "MPL": "www.boost.org/doc/libs/release/libs/mpl/doc/refmanual/{QUERY}.html",
  ".NET": "http://msdn.microsoft.com/en-us/library/{QUERY}.aspx"
};

CmdUtils.CreateCommand({
    names: ["doc"],
    author: {name: "Luc Touraille"},

    arguments: [ {role: "object",
                  nountype: /^[0-9a-zA-Z_.-]*$/,
                  label: "entity"
                 },
                 {role: "source",
                  nountype: [source for (source in urlTemplates)],
                  label: "documentation"
                 } ],

    description: "Searches the documentation for some entity on a given documentation reference.",

    _getSearchResultUrl: function( arguments ) {
      var documentationSource = arguments.source.text;

      var urlTemplate = urlTemplates[documentationSource.toUpperCase()];

      return urlTemplate.replace("{QUERY}", arguments.object.text);
    },

    execute: function( arguments ) {
      Utils.openUrlInBrowser(this._getSearchResultUrl(arguments));
    }
});

样品用途:

doc QMainWindow from qt
doc from mpl vector
doc system.idisposable from .net
doc this from .net // with some text selected

当然,这是一个非常幼稚的实现,在大多数网站上都会失败。一种更先进的方法可能是用函数替换地图中的 URL 模板,从而对目标 URL 的构建提供更多控制。我将把它作为练习留给读者:)。另一种解决方案可能是在网站上执行搜索(假设它提供了适当的 REST API 用于搜索)并跳转到第一个结果。

于 2012-04-02T15:14:37.663 回答
2

恐怕你想要的是一个 IDE,但我喜欢 Vim 却不是。

一个插件可以访问标准库文档。但是,Vim 本身无法理解您的代码并神奇地适应您在项目中包含的任何库。Vim Wiki 也有两个 可能感兴趣的页面。

于 2012-04-02T13:52:26.473 回答
1

我输入Shift+k来查看C手册页。

于 2012-04-02T13:19:10.327 回答