Действительно ли Редактор Vim очень умен?

То, что Вы, вероятно, хотите, является обобщенным списком:

\begin{list}{\quad}{}
\item ...
\end{list}

вторым аргументом этой среде является символ, который будет вставлен перед каждым объектом.

10
задан Andrea Francia 3 July 2012 в 23:23
поделиться

8 ответов

То, что вам нужно, это файлы ctags и теги / TAGS. Ctags (я рекомендую Exuberant Ctags) - это программа, которая сканирует исходные файлы на предмет идентификаторов и создает файл, индексирующий их. Затем вы можете использовать ^] для перехода к определению тега под курсором.

Могут потребоваться некоторые дополнительные сведения, чтобы сообщить vim, как найти файл тегов; Я не уверен, что это такое. Но это общая идея - запустить ctags в исходный код и затем использовать ^].

В качестве альтернативы вы можете посмотреть GNU Global. Это немного сложнее. Но ctags выполнит то, что вы описали.

12
ответ дан 3 December 2019 в 19:34
поделиться

Vim без тени сомневаюсь, лучший редактор в мире (давай, ребята, emacs). Помимо войн с пламенем, то, что я нашел невероятно полезным для программирования на C ++ и Java, - это eclipse (лучшая IDE в мире, да, теперь я ковыряю Netbeans) с плагином vrapper. Вы получаете все преимущества полностью интегрированной среды разработки и мощные сочетания клавиш vim.

Vrapper не дает вам полной эмуляции vim, но вы можете перемещаться по своему коду, используя ярлыки vim, и вы не теряете ни одной из доброта затмения.

2
ответ дан 3 December 2019 в 19:34
поделиться

Использование ctags определенно является местом для начала, но не забывайте cscope. В обоих случаях перед запуском vim необходимо сначала просканировать исходные файлы с помощью cscope и ctags и создать их базы данных. Вам также необходимо время от времени обновлять базы данных по мере роста и изменения вашего кода.

С помощью ctags просто используйте команду « ctags » в каталоге кода. Если у вас есть иерархия каталогов, начните сверху и используйте " ctags -R " для рекурсивного просмотра всех каталогов ниже. Запустите vim в том же каталоге, что и получившийся файл тегов, и vim должен найти и загрузить его автоматически. Находясь в редакторе с курсором на имени функции или переменной, вы можете ввести '^]', и vim должен перейти к определению.

Аналогично, с cscope, используйте "

2
ответ дан 3 December 2019 в 19:34
поделиться

Завершение кода в vim доступно как vim-scripts: http://www.vim.org/scripts/index.php

1
ответ дан 3 December 2019 в 19:34
поделиться

ctags в целом - это ответ, как сказал Майкл Э. ctags * .c * .h - это простое начало для проекта, в котором все файлы находятся в одном каталоге. Затем, как сказал Майкл, вы можете использовать ^], чтобы перейти к определению, и ^ T, чтобы вернуться туда, откуда вы пришли. Это те же самые клавиши, которые вы используете для перемещения внутри справки Vim.

В Java и C ++ у вас может быть несколько методов с одинаковым именем. : tn перейдет к следующему, а : ts перечислит альтернативы.

Для завершения кода в Vim я обычно использую ^ P и ^ N. Он не зависит от контекста, как эквивалент в Eclipse или MSVC, но обычно выполняет свою работу.

Другие инструменты, которые вы можете рассмотреть, - это cscope и (конечно) Emacs или Eclipse.

1
ответ дан 3 December 2019 в 19:34
поделиться

Как говорили другие, вам нужно сгенерировать индексный файл для vi (m).

Я просто хочу сказать, что использование vim для программирования Java вместо современной IDE похоже на использование vim плюс калькулятор вместо электронной таблицы для чисел. Оба подходят для небольших задач,

1
ответ дан 3 December 2019 в 19:34
поделиться

Да, инструмент, который предоставляет этот индекс символа, называется ctags, и многие редакторы unix могут его использовать. vim хорош в командной строке, но я бы посоветовал потратить немного времени на то, чтобы привыкнуть к KATE. Это очень красивый современный редактор графического интерфейса с возможностью просмотра файлов в среде IDE, хорошей подсветкой синтаксиса, самым красивым динамическим переносом слов, который я когда-либо использовал, и т. Д. Однако для java стоит взглянуть на eclipse и netbeans.

-1
ответ дан 3 December 2019 в 19:34
поделиться

В прошлый раз, когда я проверял, давным-давно, ctags был в порядке, но он пропустил некоторые идентификаторы, а cscope имеет более исчерпывающий вариант поиска, но все же пропускает некоторые идентификаторы.

grep - это то, что я предпочитаю. Это исчерпывающий, но все же довольно быстрый, если база исходного кода имеет разумный размер или ПК работает быстро. Вы можете вызвать его из vim с помощью : grep . Вот упрощенная версия моего собственного _vimrc , чтобы показать, как я его настроил. Я помещаю комментарии, чтобы объяснить, какие клавиши и что делают.

" for Windows, replace with the location of `grep.exe'
" not needed for Unix/Linux
:set grepprg=c:\prog\cygwin\bin\grep.exe\ -n\ $*\ /dev/null


:function! RecursiveSearchIdentifierUnderCursor()
:   sp
:   let grep_cmd = "silent grep -r \"\\<" . expand("<cword>") . "\\>\" *"
:   exe grep_cmd
:endfunction


" CTRL-backslash to search for the identifier (or "word") under the cursor
"
" an identifier is in the form "xxx_123_yyy" but something in the form
" "xxx_123_yyy.aaa_999" would be two identifiers separated by a period
"
"
" this basically executes:
"
"       :grep -r "\<identifier\>" *
"
" for whatever `identifier' the cursor happens to be over
"
"
" to close the newly opened window, use:
"
"       :q
"
:map <C-\> :call RecursiveSearchIdentifierUnderCursor()<CR>


" cursor up/down to move to the previous/next search result
:map <Up> :cp<CR>zz
:map <Down> :cn<CR>zz


" jump up/down between horizontally split windows
:map <PageUp> <C-W>k
:map <PageDown> <C-W>j


" move to the previous/next enclosing brace
:map <Left> [{
:map <Right> ]}


" move to the previous/next enclosing parenthesis
:map <Home> [(
:map <End> ])


" move to the previous/next enclosing # preprocessor directive
:map <Insert> [#
:map <Del> ]#

Также не забудьте * (SHIFT-8) и # (SHIFT-3) для поиска вперед и назад текущего идентификатора под курсором в текущем файле. . Я нашел это бесценным при просмотре кода, особенно при поиске коротких имен переменных, таких как «i» и «j», которые в противном случае соответствовали бы частям других имен переменных при слепом поиске в обычном текстовом редакторе.

Вы также можете вызвать : make из vim , если хотите использовать make . Он остановится при первой ошибке компиляции, затем вы сможете отредактировать и снова запустить сборку из vim .

Когда вы научитесь определять свои собственные функции и сопоставления клавиш, есть множество способов упростить повторяющиеся задачи программирования с помощью vim .

2
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: