2009-05-05 17 views
6

Ich weiß nicht, ob das überhaupt möglich ist, aber immer noch ... nichts schaden zu fragen.Kann Vim tun Forran Abschluss der Unterroutine Argumente

Ich benutze Vim, um Fortran-Dateien, alte und neue (. For und. F90) zu bearbeiten. Ich versuche, Abschluss, etwas ähnlich Visual Studio zu bekommen, so dass, wenn ich in einer Datei definiert mehrere Funktionen haben:

subroutine init (ibc, nquad, ul, ur, xl, xr) 
subroutine output (f, ibc, indx, nsub, nu, ul, ur, xn) 
subroutine phi (il, x, phii, phiix, xleft, xrite) 

und ich nenne sie irgendwo:

call init(<cursor is here> 

ich die Liste der Argumente, also muss ich mich nicht an sie erinnern. Wenn ich richtig verstanden habe, nennt VS das "Intellisense".

Ist etwas ähnliches in Vim (GVim72) verfügbar und wenn es ist, wie man es zur Arbeit bringt? Irgendwelche Tipps geschätzt.


ldigas edit: ich auch zufrieden sein würde, wenn ich nur die Erklärung Linie bekommen konnte, als zu sagen, wenn ich schreibe:

call init(<cursor is here> 

und drücken Abschluss Schlüssel, Vim Schläge in der ganzen Linie, z

call init(ibc, nquad, ul, ur, xl, xr) 

ldigas edit2: 2 Antworten so weit zurückgezogen ... interessant.


Antwort

3

Der nächste sollte vim intellisense sein. Leider unterstützt es Fortran noch nicht ...

+0

Ja, das habe ich beim googlen gesehen. Leider, wie du gesagt hast, hilft es nicht. Ich fand auch Leute, die hier und da andere (mehr vim like) Alternativen erwähnten, aber nichts, was mit Fortran zu tun hatte. Hoffe, jemand anderes wird mehr wissen ... – Rook

2

Ich denke, die nächste, die Sie möglicherweise erhalten können, ist eine Vim-Funktion, die ähnlich wie Intellisense funktioniert, aber verwenden Sie die Syntax-Highlighting-Datei als Grundlage. Sehen Sie sich hier meine .vimrc-Datei als Beispiel an. Grundsätzlich wird für jede der aufgelisteten Typen eine automatische Vervollständigung eingerichtet: Wenn der Dateityp von Omnisense unterstützt wird, wird dieser verwendet, andernfalls wird die Syntaxhervorhebungsdatei verwendet.

syntax on 
colorscheme elflord 
set tabstop=4 
set shiftwidth=4 
set nu! 
set et! 
filetype on 
filetype plugin on 
autocmd FileType python set omnifunc=pythoncomplete#Complete 
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS 
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags 
autocmd FileType css set omnifunc=csscomplete#CompleteCSS 
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags 
autocmd FileType php set omnifunc=phpcomplete#CompletePHP 
autocmd FileType sql set omnifunc=sqlcomplete#Complete 
autocmd FileType c set omnifunc=ccomplete#Complete 
if has("autocmd") && exists("+omnifunc") 
    autocmd Filetype * 
     \ if &omnifunc == "" | 
     \  setlocal omnifunc=syntaxcomplete#Complete | 
     \ endif 
endif 

Eine andere Möglichkeit ist auf der vim.org-Website zu suchen.Zum Beispiel fand ich das es folgendes (auch wenn es nicht genau das, was Sie suchen, es ist nur ein Beispiel)

fortran_codecomplete.vim : Complete fortran constructs with

this helps

+1

Leider scheint onmnifunc nicht so gut mit fortran zu funktionieren. Zumindest nicht so, wie ich es brauche. Wie für den zweiten Teil, ich kenne Michael Goerz Plugin, aber es ist nicht das, was ich brauche. Was er gemacht hat, ist ein Plugin, eine Art Snippet-Plugin. Es gibt viele von denen herum, snipmate, xptemplate ... um nur einige zu nennen. Um es kurz zu machen, kein Glück hier. Trotzdem schätze ich die Mühe. – Rook

3

Teilantwort:

Okey, ich habe den ersten Teil:

Vim die gesamte Linie Fertigstellung wird von

0 aufgerufen
<Ctrl-X, Ctrl-L> 

(wenn es in der gleichen Datei ist, die, btw, ist es sehr oft nicht)

Unfortunatelly, wenn eine Erklärung Unterprogramm wie

sieht
call assemble (adiag, aleft, arite, f, h, indx, nl, node, nu, nquad, & 
nsub, ul, ur, xn, xquad) 

(wo "&" ist eine Fortsetzung Marke) wird dieser Weg nicht funktionieren. Kennt jemand (komm dir Skripterstellung) einen Weg um dieses Verhalten zu vermeiden?

2

Schnell & Schmutzige: Exuberant CTAGS

VIM versteht sehr gut, Tags. Leider ist das nicht das glatte Verhalten, das Sie zu haben scheinen: Sie werden zwischen den Fenstern hüpfen, aber ich dachte, das wäre wunderbar, da ich sonst nichts hatte.

Was funktionieren kann ist Photran, aber ich habe es noch nie benutzt. Da es jedoch Open Source und konfigurierbar ist, können Sie jemanden finden, der bereits die Straße gegangen ist, in der Sie sich befinden, z. B. scheint es eine zu geben. YMMV.

+1

Ich benutze derzeit auch Ctags, es funktioniert gut, aber in der Tat ist das Prellen zwischen Fenstern lästig. Die Autokomplettierung, wie sie das OP vorschlägt, ist sehr nett, aber ich habe das nur für C++ gefunden. – steabert