Je suis actuellement en utilisant le mappage suivant pour, essentiellement copier sur tous les fichiers écrits dans mon dev env à mon serveur local via l'exécution d'un script. Cela fonctionne bien pour les fichiers individuels. Cependant, j'ai l'habitude de faire: wa pour sauver tous les tampons ouverts:vim autocommand événement pour écrire tous les tampons: wa
au BufWritePost /path/to/dev/* silent !$HOME/bin/somescript.sh %:p
Toutes les suggestions sur la façon dont je pourrais réécrire l'existence de ce comme condition:
if one file
exec script to copy just that file # like I already have
if :wa
# here I'd probably exec a script to just copy recursively
EDIT
Solution possible par solution de ZyX:
au BufWritePost /Users/rlevin/programming/sugar/Mango/sidecar/* silent !$HOME/bin/sugarbuild.sh %:p
" If we do :wa<CR> we check if command type is ':' and if command itself was
" 'wa'. If so, we call the command WA which calls BuildSidecarIfInProject.
" This checks if we're actually within the project's directory
cnoreabbrev <expr> wa ((getcmdtype() is# ':' && getcmdline() is# 'wa')?('WA'):('wa'))
command! WA :call BuildSidecarIfInProject()
function! BuildSidecarIfInProject()
if fnamemodify('.', ':p')[:44] is# '/Users/rlevin/programming/sugar/Mango/sidecar'
exec ":!$HOME/bin/toffeebuild.sh"
endif
endfunction
Nous ne vérifions pas si "la commande elle-même est wa". Nous vérifions si c'est la seule entrée présente sur la ligne de commande afin qu'elle ne développe pas des choses comme 'e wa' à' e WA'. Il est peu probable que vous rencontriez ce problème, mais c'est toujours une bonne pratique. – ZyX