J'ai un grand script shell qui utilise un mélange d'espaces et de tabulations. Je veux ré-indenter le fichier entier basé sur la syntaxe, comme le format d'Eclipse. Existe-t-il un programme (embellir?) Qui fera cela?
J'ai du mal à comprendre la logique avec tout ce qui est coincé, par exemple
if [ "$CANCELLATION" ]
then
while test $num -gt 0
do
if [ "$cjb" -gt 0 ]
J'ai appris à appeler des fonctions dans Vim mais cela n'a pas fonctionné.
Emacs - a perdu toutes les nouvelles lignes
linux
indentation
jsymolon
la source
la source
M->
est la liaison habituelle pourend-of-buffer
. Parce que retirer vos mains du clavier est mauvais.C-x h
, qui s'exécutemark-whole-buffer
.untabify
que tout soit désélectionné, et (2) cela ne servait-il pas simplement à être également dans le menu? Ça mérite de l'être!Dans Vi / Vim une fois que vous avez défini la syntaxe de fichier correcte (
:set syntax=sh
), vous pouvez appuyer sur:gg=G (ou 1G=G) pour corriger l'indentation de l'ensemble du fichier.Voici la commande pour formater l'intégralité du fichier sur place:
Remarque: effectuez une sauvegarde avant d'exécuter la commande ci-dessus.
Pour tester d'abord la mise en forme, modifiez le fichier dans Vim et exécutez:
:norm gg=G
.Voir aussi: Ré-indentation de code mal indenté chez Vi SE
la source
if
etfi
mots - clés. Peut-être qu'un plugin est nécessaire?filetype=sh
(ouft
).Il semble que shfmt puisse faire l'affaire pour vous. Il formate le code shell / bash, qui comprend l'indentation.
la source
shfmt -i 2 -ci ~/mariadb-qa/pquery-run.sh
Vous voulez probablement Super Shell Indent . Enregistrez-le dans ~ / .vim / indent et lorsque vous serez le prochain dans vim, exécutez
:source ~/.vim/indent/sh.vim
Vous souhaitez également probablement configurer une indentation intelligente basée sur des fichiers dans votre .vimrc
Si cela ne vous dérange pas que vim joue avec votre mise en forme, ajoutez également cette ligne à vimrc.
Bref, voici ce que vous attendiez. Lorsque vous éditez ensuite un script shell dans vim, en supposant que vous avez activé le retrait intelligent et installé le super identifiant shell, appuyez simplement sur les touches suivantes pour réindenter votre script:
gg=G
la source