vim - сделать сопоставление применимым, только если имя файла содержит определенные символы

Скажем, я хочу, чтобы конкретное отображение vim было применимо только в том случае, если имя файла (точнее, путь) содержит конкретные символы - независимо от типа файла.

Можно ли это сделать? Как? Или я слишком многого прошу?

2
задан 21 November 2012 в 17:08

2 ответа

Да, вы можете сделать это с помощью команды autocmd vim, поместив что-то вроде следующего в ваш файл .vimrc:

autocmd BufRead,BufNewFile /path/* map <buffer> <c-J> gqip

Это приведет к выполнению команды map всякий раз, когда Вы начинаете редактировать новый (из-за события BufNewFile) или существующий (из-за события BufRead) файл, соответствующий шаблону. Поскольку шаблон содержит /, он будет сопоставлен со всем путем к файлу, в противном случае он будет сопоставлен только с базовым именем файла. Использование аргумента <buffer> для команды map будет применять сопоставление только к текущему буферу.

Вы можете использовать :help autocmd, чтобы получить дополнительную информацию по определению autocmds, включая доступные события и детали поддерживаемых шаблонов.

0
ответ дан 21 November 2012 в 17:08

Я хотел, чтобы одно условное отображение переключалось с шаблона представления на действие и обратно, используя плагин Symfony для Vim. Я хотел условия в самом отображении, потому что я не очень люблю autocmd.

В этом примере я сопоставляю имя файла (не полный путь) с ".class"

" Symfony switch between action and view
nnoremap <expr> <leader>a match(expand('%:t'),'\.class') == -1 ? ':Saction<CR>' : ':Sview<CR>'

Синтаксис:

nnoremap <expr> left_hand_side right_hand_side

и сам right_hand_side должен иметь этот формат

condition ? mapping_for_when_its_true : mapping_for_when_its_false ;

оба отображения должны быть заключены в кавычки.

См. :help expand() и :help match(), чтобы узнать, как получить имя файла или полный путь и сопоставить его со строкой.

0
ответ дан 21 November 2012 в 17:08

Другие вопросы по тегам:

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