Как пройти через структуру каталогов и запустить сборку mvn в vimscript? - PullRequest
2 голосов
/ 11 апреля 2011

Я новый пользователь vim, которому нужна небольшая помощь со скриптом, который позволил бы мне вызвать mvn build.

В настоящее время я отображаю это следующим образом

map <F3> :! mvn build<CR>

но поскольку он пытается выполнить сборку в моем текущем рабочем каталоге (в настоящее время ява-разработка, так что я обычно глубоко в пакете под src)

Как мне перейти к структуре каталогов, чтобы эта команда сборки mvn работала правильно?

Заранее спасибо

1 Ответ

3 голосов
/ 11 апреля 2011

Функция 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...