Какие лучшие инструменты программирования общего назначения дополняют Vim? [закрыто]


22

Я уже некоторое время использую Vim в качестве своего текстового редактора, и я чувствую, что делаю все возможное. Я использую ctags для обозначения своей базы кода для навигации и использую grep (хотя и неэффективно), чтобы найти, где используются определенные методы. Но у меня есть ощущение, что есть некоторые очень полезные инструменты, о которых я не знаю, которые могут сделать меня более продуктивным.

Какой самый лучший программный стек, который я мог бы использовать для общего программирования, который дополнял бы Vim? Как вы перемещаетесь по базе кода, запускаете make, вносите изменения в вашу систему контроля версий и т. Д.? У вас есть вторая консоль рядом с Vim?


2
Сама Вим. Может быть, вы не используете правильные плагины / скрипты для работы. Это зависит от того, какое программирование вы делаете, на каком языке, какие другие инструменты вам нужны и так далее.
кусочек

Я не указываю никакой язык, чтобы не влиять на ответы, которые я получу. Я не очень ищу плагины Vim, хотя они полезны.
Луи Салин

Я нашел эту презентацию очень полезной: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.

Я сделал это вики сообщества. Я понял, что нет лучшего ответа на мой вопрос. Спасибо всем за ваши ответы!
Луи Салин

Ответы:


8

Отличной особенностью vim является простота интеграции с существующими командами оболочки. Некоторые из наиболее полезных внешних инструментов - те, которые включены в coreutils и другие простые инструменты манипулирования текстом. Например, мы можем получить количество строк в файле с помощью:

:! wc -l %

или количество слов:

:! wc -w %

Любая команда, которая работает на оболочке, будет работать здесь. Это может быть мощно объединено с командой :read( :r), чтобы поместить выходные данные команды в файл. Например:

:r !wc -l %

Поместит количество строк в файл, который вы редактируете.

Еще одним преимуществом этого является замена текста, который вы сейчас редактируете, выводом одной из этих команд. Например, вы можете отформатировать весь файл par, выполнив команду:

:% !par

5

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


+1 за ссылку на этот фантастический плагин. ( github.com/scrooloose/nerdtree )
noffle

4

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

Получите инструмент extarant ctags , он работает для многих языков и прост в использовании.

от VIM :help ctags

ctags создаст индекс всех идентификаторов в исходном дереве. Затем вы можете использовать команды тегов для перемещения по вашему исходному дереву. см :help tag-commands. Самый простой - навести курсор на ключевое слово и нажать CTRL- ]. Чтобы вернуться туда, откуда вы пришли из прессы CTRL-T

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


Я упоминал в своем вопросе, что использую ctags, но все равно спасибо за ответ! :)
Луи Салин

4

Vim - очень мощный инструмент, я уверен, что вы все это уже знаете. Вы начнете повышать производительность, используя vim в течение нескольких недель. Но вы никогда не будете насыщать свои знания о Vim. Поэтому я всегда в поиске новых и эффективных способов ведения дел в Vim. Есть парень по имени Дерек Уайетт, который сделал несколько великолепных скринкастов по использованию Vim, а также по плагинам, которые он использует.

Несколько плагинов, которые я использую

  1. command-t Это делает просмотр файлов быстрым и очень интеллектуальным .

    Плагин Command-T предоставляет чрезвычайно быстрый, интуитивно понятный механизм для открытия файлов с минимальным количеством нажатий клавиш. Он называется «Command-T», потому что он вдохновлен окном «Перейти к файлу», привязанным к Command-T в TextMate.

  2. fuzzyfinder Я использую это в основном для расширения буферов и изменения текущего каталога.

    FuzzyFinder предоставляет удобные способы быстрого доступа к нужному буферу / файлу / команде / закладке / тегу. FuzzyFinder выполняет поиск по нечеткому / частичному шаблону, в который он преобразовал введенный шаблон

  3. NERDTree Это лучший плагин для файлового браузера для vim.

    Дерево NERD позволяет вам исследовать вашу файловую систему и открывать файлы и каталоги. Он представляет вам файловую систему в виде дерева, которым вы манипулируете с помощью клавиатуры и / или мыши. Это также позволяет вам выполнять простые операции с файловой системой.

  4. XPTemplate Лучший шаблонный плагин в мире.

    Движок фрагментов кода для Vim, с библиотекой фрагментов. XPTemplate позволяет писать коды плавно, быстро и удобно.

  5. rails.vim Если вы работаете с rails dev, это необходимо.

    TextMate может быть последним увлечением для разработки приложений Ruby on Rails, но Vim - это навсегда. Этот плагин предлагает следующие функции для разработки приложений на Ruby on Rails.

  6. NerdCommenter Упрощает комментирование любого кода.

И это лишь некоторые из плагинов, которые я использую. Чтобы загрузить все плагины с моего vimrc, проверьте мои точечные файлы


3

Есть отличный плагин для VIM, который выполняет синтаксическую проверку Syntastic . Есть также много других инструментов, доступных для управления файлами, сборки и т. Д. Перейдите на IRC #vim на freenode.net, там много полезных людей.


3

мой любимый это cscope. Если вы скомпилировали vim с поддержкой cscope, вы можете напрямую использовать команды cscope из VIM. например, поиск включенных файлов, функций, вызываемых функцией xyz, и т. д. Я пробовал это с очень большим хранилищем исходного кода. Это очень помогает.

http://cscope.sourceforge.net/cscope_vim_tutorial.html


1

Если вы программируете на любом из языков, поддерживаемых GCC (C, C ++, Java, Fortran), тогда Clewn - отличный плагин, который интегрирует отладчик GDB в VIM. Я на самом деле нашел, что это один из лучших интерфейсов для GDB, который есть.


0

Я обычно настраиваю screenсессию для каждого проекта. Vim находится в окне 0, и я использую окно 1 для сеанса оболочки. Если я пишу на языке, который имеет достойный REPL, я обычно запускаю его в окне 2. Конечно, вам не нужно screenэто делать; Вы можете сделать это с помощью разных окон терминала или с помощью вкладок в мультитаб. Я нахожу screenболее стабильным, чем другие альтернативы: если ваше терминальное приложение дает сбой, вы можете просто запустить другой терминал и снова подключиться к вашему еще работающему screenсеансу. screenтакже очень быстро перемещаться, как только вы изучите его (очень похоже на сам vim).

В основном я использую сессию оболочки для сложных действий по управлению версиями, таких как перебазирование или слияние: более простые вещи можно сделать из командной строки vim (например, с :!git commit % -m 'Added info aboutэкрана .') или с помощью беглого дополнения. Я нахожу беглецов :Gmove(переименовывать текущий буфер как в vim, так и в индексе git) и :Gdiff(вызывать vimdiff для текущего буфера с предыдущей точкой в ​​своей истории) особенно полезными. Вы также можете сделать такие вещи, как создание сообщения коммита в чистом буфере, копирование текста из различных частей вашего кода, а затем фиксация с помощью:%!git commit -F /dev/stdin

Я также буду использовать сессию оболочки для функционального / интеграционного тестирования, если это применимо к тому, над чем я работаю, например, если я пишу утилиту командной строки.

Функциональность быстрого исправления Vim полезна для отладки, хотя, похоже, для каждого языка, на котором вы, возможно, захотите работать, требуется разное дополнение. Они также, похоже, используют различные методы вызова, сопоставление с функциональными клавишами или последовательностями клавиш, начинающимися с \или ,, или к пользовательским командам, или автоматически вызываться при сохранении буфера. До сих пор я не удосужился разобраться в этом, и просто прочитал результаты модульного теста или lint в пустой буфер, используя например :r !python -m doctest whatever.py. Измените код, переключитесь обратно в рабочий буфер, uчтобы отменить, затем нажмите :rи стрелку вверх (большую часть времени), чтобы вернуть эту команду. Но, возможно, стоит поискать дополнение для этого, в зависимости от того, на каком языке вы работаете.

Для популярных скомпилированных языков, таких как C, java и т. Д., :makeБудет выполнена сборка, а поддержка списка быстрых исправлений хорошо известна. Таким образом, вы можете сделать это :copenдля отображения буфера быстрого исправления. Он покажет список ошибок, по одной на строку; удар Enterпо строке переместит другое окно к этой точке в этом файле.

Если вы работаете с несколькими проектами одновременно, вы можете сделать так, :lmakeчтобы список ошибок сохранялся в списке местоположений : это похоже на список быстрых исправлений, но он связан с одним окном, а не является единичным в пределах вашего vim instance. :lopenоткроет список местоположений для текущего окна.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.