Функция vimscript finddir()
может использоваться для поиска каталога src
. Синтаксис, использованный во втором аргументе (path
), имеет несколько дополнений к базовой спецификации пути , одним из которых является возможность указать восходящий поиск с использованием ;
:
let src_dir = finddir('src', ';')
Это найдет каталог src, если он находится выше текущего каталога.
Чтобы выполнить сборку в этом каталоге, вы можете запустить
exec '!cd' shellescape(src_dir) '&& mvn build'
Я не думаю, что это будет работать под окнами. В этом случае, я думаю, вы захотите временно изменить каталог с помощью команды vim cd
, выполнить команду, а затем вернуться обратно с помощью :cd -
.
Вы можете объединить эти команды в функцию
function! RunMavenInSrcDir()
let src_dir = finddir('src', ';')
exec 'cd' fnameescape(src_dir)
!mvn build
cd -
endfunction
Выполнение этой функции будет иметь побочный эффект от затухания предыдущего текущего каталога vim : другими словами, выполнение :cd -
впоследствии не обязательно изменится на тот же каталог, который был бы раньше.
Вы можете организовать вызов функции с помощью
.
map <F3> :call RunMavenInSrcDir()<CR>
или командой с
command! RunMavenInSrcDir call RunMavenInSrcDir()