Как установить ярлык в Vim для конкретного имени файла? - PullRequest
0 голосов
/ 18 октября 2018

В моем .vimrc у меня есть

" Rspec Shortcuts
nnoremap <leader>t :!clear; bundle exec rspec % --fail-fast<cr>

" Minitest Shortcuts
nnoremap <leader>t :!clear; bundle exec ruby -w -Itest %<cr>

Я хочу, чтобы эти ярлыки были связаны с именем файла.

Я попытался установить условие следующим образом:

if @% =~ '*_spec.rb'
  nnoremap <leader>t :!clear; bundle exec rspec % --fail-fast<cr>
endif

if @% =~ '*_test.rb'
  nnoremap <leader>t :!clear; bundle exec ruby -w -Itest %<cr>
endif

Но это не сработало.Без условий ярлыки работают конечно.

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно сделать 2 вещи:

  • Использовать локальные сопоставления буфера, добавив <buffer>
  • Установите эти сопоставления только для определенных имен файлов, возможно, через :autocmd

Отображения будут выглядеть следующим образом:

nnoremap <buffer> <leader>t :!clear; bundle exec rspec % --fail-fast<cr>
nnoremap <buffer> <leader>t :!clear; bundle exec ruby -w -Itest %<cr>

Теперь вам нужно загрузить эти отображения для конкретных FileType или имен файлов:

augroup RubyTestMappings
    autocmd!
    autocmd BufNewFile,BufRead *_spec.rb nnoremap <buffer> <leader>t :!clear; bundle exec rspec % --fail-fast<cr>
    autocmd BufNewFile,BufRead *_test.rb nnoremap <buffer> <leader>t :!clear; bundle exec ruby -w -Itest %<cr>
augroup END

Другой вариант - поместить эти сопоставления в ~/.vim/after/ftplugin/ruby.vim примерно так:

if @% =~ '*_spec.rb'
  nnoremap <buffer> <leader>t :!clear; bundle exec rspec % --fail-fast<cr>
endif

if @% =~ '*_test.rb'
  nnoremap <buffer> <leader>t :!clear; bundle exec ruby -w -Itest %<cr>
endif

Для получения дополнительной помощи см .:

:h :map-local
:h :autocmd
:h BufNewFile
:h BufRead
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...