Может ли Vim сделать Fortran завершение аргументов подпрограммы - PullRequest
6 голосов
/ 05 мая 2009

Я не знаю, возможно ли это вообще, но все же ... спрашивать не вредно.

Я использую Vim для редактирования старых и новых файлов (.for и .f90). Я пытаюсь получить завершение, что-то похожее на Visual Studio, так что, когда у меня есть несколько подпрограмм, определенных в файле:

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 )

и я их где-то называю:

call init(<cursor is here>

Я получил список аргументов, поэтому мне не нужно их запоминать. Если я правильно понял, VS называет это "Intellisense".

Есть ли что-то подобное в Vim (GVim72) и, если оно есть, как заставить его работать? Любые советы приветствуются.


Редактирование ldigas: Я также был бы рад, если бы я мог просто получить строку объявления, как, например, когда я наберу:

call init(<cursor is here>

и нажмите клавишу завершения, Vim пробивает всю строку, например,

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

ldigas edit2: Пока снято 2 ответа ... интересно.


Ответы [ 4 ]

3 голосов
/ 05 мая 2009

частичный ответ:

Окей, я получил первую часть:

Завершение всей строки Vim вызывается

<Ctrl-X, Ctrl-L>

(если он находится в том же файле, что, между прочим, очень часто это не так)

К сожалению, если объявление подпрограммы выглядит как

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

(где «&» - знак продолжения), этот путь не сработает. Кто-нибудь (давай, сценаристы, vimmers) знает, как избежать такого поведения?

3 голосов
/ 05 мая 2009

Ближайшим должен быть vim intellisense . К сожалению, он пока не поддерживает Фортран ...

2 голосов
/ 07 мая 2009

Быстро и грязно: Обильные CTAGS

VIM очень хорошо понимает теги. К сожалению, это не совсем гладкое поведение, которое вам, кажется, нужно: вы будете подпрыгивать между окнами, но я подумал, что это было замечательно, учитывая, что у меня больше ничего не было.

Может работать Фотран , но я никогда не использовал его. Однако, поскольку он с открытым исходным кодом и настраивается, вы можете найти кого-то, кто уже пошел по пути, по которому вы идете, например, существует плагин VIM . YMMV.

2 голосов
/ 05 мая 2009

Я думаю, что самое близкое, что вы могли бы получить, - это функция vim, которая работает аналогично intellisense, но позволяет вам использовать файл выделения синтаксиса в качестве основы. Взгляните на мой файл .vimrc здесь для примера. В основном он устанавливает автозаполнение для каждого из перечисленных типов: если тип файла поддерживается omnisense, он использует его, в противном случае он использует файл подсветки синтаксиса.

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 

Еще одна возможность - заглянуть на сайт vim.org. Например, я нашел там следующее (даже если это не совсем то, что вы ищете, это просто пример)

fortran_codecomplete.vim: завершенные фортрановые конструкции с

Надеюсь, это поможет

...