Мой типичный рабочий процесс в Vim состоит из двух вертикальных панелей; производственный код слева, а тесты справа.
Я часто переключаю языки (и тестовые среды), поэтому мне нравится создавать новое отображение для запуска моего тестового кода в каждом сеансе. Допустим, я делаю какой-то проект на Ruby и выхожу из класса в lib/importer.rb
. Прилагаемые спецификации находятся в spec/lib/importer_spec.rb
.
Чтобы создать свое отображение для запуска спецификаций, я бы сфокусировался на панели, показывающей спецификации, и ввел следующее:
:nnoremap -g :!rspec %<cr>
Примечание: я использую дефис / минус в качестве ключа лидера.
Это работает, но только если панель спецификаций имеет фокус, когда я нажимаю - g. Если рабочая область имеет фокус, и я нажимаю на отображение, rspec попытается запустить рабочий код, что не имеет смысла.
Чтобы обойти это, я могу написать абсолютный путь к файлу спецификации:
:nnoremap -g :!rspec spec/lib/importer_spec.rb<cr>
Это работает, хотя это немного громоздко писать.
Читая вчера вечером Practical Vim , я понял, что в командном режиме вы можете использовать %
раскрытие - вы пишете %
а затем нажимаете вкладку , и процент заменяется абсолютным путем к файлу в текущей области.
Если я сделаю это:
:!rspec %
... А затем нажмите Tab, я получаю это:
:!rspec spec/lib/importer_spec.rb
И это здорово! Однако, если я сделаю это:
:nnoremap -g :!rspec %
... А затем нажмите Tab, я получаю это:
:nnoremap -g :!rspec %^I
Я хороший человек, и я плачу свои налоги. Почему это происходит со мной?