2012-04-02 16 views
9

Soruları aşağıda kalın olarak yazınız. Bu bir programlama sorusudur, bu yüzden sonuçlara atlamayın ve kapanmaya oy verin.Programlama dokümantasyonuna hızla atlamak için iyi bir araç

Ben bir C++ programcısıyım. OS X/quicksilver veya ubuntu/compiz/gnome do'u masaüstü bilgisayarım olarak kullanıyorum. Fareye dokunmamaya çalışıyorum ve birden fazla masaüstünü kullanıyorum ve bunların her ikisini de klavyeden sürüyorum. Programlama için bash ve vim kullanıyorum. Bir C++ programcısı olduğum için, her yerde dağınık belgelere, örneğin STL/Boost/CMAKE/zeromq/protokol arabellekleri/Mongodb/rapidJson/luajit'e başvurmalıyım ve liste devam eder. Çeşitli referans kılavuzlarına atlamak, gerçek zamanlı bir evye/zihinsel düşünce süreci bozucusudur. Belki de bunun gerçekten bir sorun olduğuna ikna olmuyorsunuz, ancak kodlama olmadan, çoklu kütüphaneleri kullanıyorsanız, bunun gerçekten bir sorun olduğunu takdir edeceksiniz. Milletler referans el kitabı bağlantılarını nasıl yönetiyorlar ve başvuru kılavuzlarına atlamanın en hızlı yolu nedir? Standart tarayıcı yer imleri cevap değildir ve önerileriniz mümkün olan en az sayıda tuş vuruşuyla yapılmalıdır, ya da bilgiden en düşük gecikme bilgisine ihtiyaç duyulan bilgi sentezinden memnun olmalıdır.

Özel bir tarayıcı veya güçlü eklentiler bilmiyorum. Dizin navigasyon için vim NERDTree kullanıyorum, belki bu satırlarda bir şey var mı? Örneğin, boost dosya sistemini yazabilmeli ve boost dosya sisteminin kod referans sayfasına doğrudan bağlanabilmem gerekir.

+0

VIM'i kullanmayı düşündüğünüz şey hala en iyi seçimdir? Özellikle de, günümüz IDE'sinin sizin için düzelttiği bir sorun yaşadıktan sonra? –

cevap

1

Ben Shift + kC adam sayfasını görüntülemek için yazın.

+0

Evet, bu iyi bir başlangıç ​​noktası olur = D. Ancak çoğu C++ kütüphanesinin bu günlerde çevrimiçi kılavuzları var. Dahası, sadece clang kodlayıcı araçların kodlarını tanımlayıcıları doğru semantiklerle önceden ayıklamak için ayrıştırır, dolayısıyla bunun için herhangi bir araç yoktur. Yani, öncelikle vim ile clang ++ kurmalıyım, daha sonra web tabanlı referans kılavuzlarına trambolin için alt sistem kullanmalıyım: D –

+0

Ayrıca tanımlayıcıları bir otoriter formata normalleştirmek zorundayım (boost :: fileystem :: boost-fileysten yolu gibi), böylece araçlar beni en üst düzey belgelere yönlendirir. Bazı araçlarda daha hızlı sadece "boost-fileystem" yazıyor ve doğru sayfaya gidiyor. –

2

İstediğin şeyin bir IDE olduğunu, hangi Vim'i sevdiğimi korkmuyorum.

a plugin that gives access to the standard library documentation var. Bununla birlikte, Vim sizin kodunuzu anlamlandıramaz ve projenize dahil ettiğiniz kütüphaneye büyülü bir şekilde uyarlanamaz. Vim Wiki ayrıca ilgi çekici olabilecek twopages'a sahiptir.

+0

Hayır C++ ide, görsel stüdyosu dışında, modern C++'yi doğru olarak veya yeterince hızlı ayrıştırır. bu yüzden C++ IDE'leri reddettim. Bu tam olarak URL'nin hızlı atlamak için izin verecek bir bağlantı yönetimi uygulaması/worflow formu arıyorum nedenidir. Ben quicksilver veya gnome-do gibi bir aleti almamın söylenmesini söylemişti, bu da hızlı bağlantılara geçmeme izin verecek. –

+0

Gnome Do hakkında pek bir şey bilmiyorum, ancak Tercihler> Katalog> Özel öğesinde Quicksilver'e özel web aramaları eklemek çok kolay. Kütüphanelerinizde aranabilir bir dokümantasyon varsa, en azından kısmen sorununuzu çözebilirim. Bunun için – romainl

+0

+1. Zamanında bu noktada bir harita üzerinde gelişmem. Ama sanırım gnome-do benzer işlevselliklere sahip olacak. Ben ona bakacağım. –

4

Belgelerinizin başvuruları iyi tanımlanmış bir URI'ye sahipse, belge kimliği ve bazı varlık tanımlayıcısı verilen doğru URI'yi otomatik olarak oluşturan küçük bir program oluşturabilirsiniz.

Mesela ben Ubiquity konsolunu bir pencere gelecektir ctrl + uzay yazıp qt QSomeClass yazarak, beni hızla sadece Firefox'a değiştirerek, herhangi Qt varlığın son belgelere açmak sağlayan küçük Ubiquity komutu yazdım . Gördüğünüz gibi

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." 
}); 

, çok basit ve can: Burada

(zaten Ubiquity yüklediyseniz, sen this blank page üzerinde komut beslemesine abone olabilir) Ubiquity komutun tam koddur URL, iyi yapılandırılmış olduğu sürece diğer çevrimiçi belgeler için 'a kolayca uyarlanabilir.

Düzenleme İşte

size (sadece şablonlar harita doldurmak gerekir) ihtiyaçlarınıza uyarlayabilirsiniz daha genel bir sürümü:

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)); 
    } 
}); 

Numune kullanır:

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

Tabii ki, bu çok saf bir uygulama, çoğu site için başarısız olur. Daha gelişmiş bir yaklaşım, haritadaki URL şablonlarını işlevlere göre değiştirerek, hedef URL'nin oluşturulması üzerinde daha fazla kontrol sağlayabilir. Bunu okuyucu için bir egzersiz olarak bırakacağım :). Başka bir çözüm, web sitesinde bir arama yapmak (arama için uygun bir REST API'si sağladığını varsayarak) ve ilk sonuca atlamak olabilir.