Я уже некоторое время использую Vim в качестве своего текстового редактора, и я чувствую, что делаю все возможное. Я использую ctags для обозначения своей базы кода для навигации и использую grep (хотя и неэффективно), чтобы найти, где используются определенные методы. Но у меня есть ощущение, что есть некоторые очень полезные инструменты, о которых я не знаю, которые могут сделать меня более продуктивным.
Какой самый лучший программный стек, который я мог бы использовать для общего программирования, который дополнял бы Vim? Как вы перемещаетесь по базе кода, запускаете make, вносите изменения в вашу систему контроля версий и т. Д.? У вас есть вторая консоль рядом с Vim?
utilities
programming
vim
Луи Салин
источник
источник
Ответы:
Отличной особенностью vim является простота интеграции с существующими командами оболочки. Некоторые из наиболее полезных внешних инструментов - те, которые включены в coreutils и другие простые инструменты манипулирования текстом. Например, мы можем получить количество строк в файле с помощью:
или количество слов:
Любая команда, которая работает на оболочке, будет работать здесь. Это может быть мощно объединено с командой
:read
(:r
), чтобы поместить выходные данные команды в файл. Например:Поместит количество строк в файл, который вы редактируете.
Еще одним преимуществом этого является замена текста, который вы сейчас редактируете, выводом одной из этих команд. Например, вы можете отформатировать весь файл
par
, выполнив команду:источник
Я считаю NERDtree незаменимым для навигации по моей кодовой базе. Кроме того, стоит потратить некоторое время на то, чтобы стать опытным в перемещении по вашим буферам / окнам.
источник
Каким бы ни был ваш язык, вы захотите использовать функцию ctags, которая позволяет просматривать определения источников. Для этого требуется внешний инструмент для генерации файлов TAGS, которые используются VIM для обнаружения местоположений различных определений кода в проекте.
Получите инструмент extarant ctags , он работает для многих языков и прост в использовании.
от VIM
:help ctags
ctags создаст индекс всех идентификаторов в исходном дереве. Затем вы можете использовать команды тегов для перемещения по вашему исходному дереву. см
:help tag-commands
. Самый простой - навести курсор на ключевое слово и нажать CTRL- ]. Чтобы вернуться туда, откуда вы пришли из прессы CTRL-TПомимо этого, вы можете захотеть взглянуть на некоторые советы и улучшения VIM, обсуждаемые здесь , это очень всестороннее обсуждение некоторых вещей, которые можно сделать, чтобы улучшить опыт vimmer.
источник
Vim - очень мощный инструмент, я уверен, что вы все это уже знаете. Вы начнете повышать производительность, используя vim в течение нескольких недель. Но вы никогда не будете насыщать свои знания о Vim. Поэтому я всегда в поиске новых и эффективных способов ведения дел в Vim. Есть парень по имени Дерек Уайетт, который сделал несколько великолепных скринкастов по использованию Vim, а также по плагинам, которые он использует.
Несколько плагинов, которые я использую
command-t Это делает просмотр файлов быстрым и очень интеллектуальным .
fuzzyfinder Я использую это в основном для расширения буферов и изменения текущего каталога.
NERDTree Это лучший плагин для файлового браузера для vim.
XPTemplate Лучший шаблонный плагин в мире.
rails.vim Если вы работаете с rails dev, это необходимо.
NerdCommenter Упрощает комментирование любого кода.
И это лишь некоторые из плагинов, которые я использую. Чтобы загрузить все плагины с моего vimrc, проверьте мои точечные файлы
источник
Есть отличный плагин для VIM, который выполняет синтаксическую проверку Syntastic . Есть также много других инструментов, доступных для управления файлами, сборки и т. Д. Перейдите на IRC #vim на freenode.net, там много полезных людей.
источник
мой любимый это cscope. Если вы скомпилировали vim с поддержкой cscope, вы можете напрямую использовать команды cscope из VIM. например, поиск включенных файлов, функций, вызываемых функцией xyz, и т. д. Я пробовал это с очень большим хранилищем исходного кода. Это очень помогает.
http://cscope.sourceforge.net/cscope_vim_tutorial.html
источник
Если вы программируете на любом из языков, поддерживаемых GCC (C, C ++, Java, Fortran), тогда Clewn - отличный плагин, который интегрирует отладчик GDB в VIM. Я на самом деле нашел, что это один из лучших интерфейсов для GDB, который есть.
источник
Я обычно настраиваю
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
откроет список местоположений для текущего окна.источник