任何快速跳转到编程文档的好工具

时间:2012-04-02 13:14:59

标签: c++ vim coding-style reference-manual code-navigation

以下粗体问题。这是一个编程问题,所以不要妄下结论并投票结束。

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

由于我是C ++程序员,我需要引用遍布各地的文档,例如STL / Boost / CMAKE / zeromq / protocol buffers / Mongodb / rapidJson / luajit,列表继续。

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

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

3 个答案:

答案 0 :(得分:4)

如果您的文档引用具有明确定义的URI,则可以创建一个小程序,根据文档ID和某个实体标识符自动构造正确的URI。

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

以下是Ubiquity命令的完整代码(如果您已经安装了Ubiquity,则可以在this blank page上订阅命令源):

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进行搜索)并跳转到第一个结果。

答案 1 :(得分:2)

我担心你想要的是一个IDE,而Vim,不管我喜欢它,都不是。

a plugin that gives access to the standard library documentation。但是,Vim本身无法理解您的代码并且神奇地适应您在项目中包含的任何库。 Vim Wiki也有two pages可能感兴趣。

答案 2 :(得分:1)

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