Comment puis-je corriger l'erreur de syntaxe de perl “manquant droit bouclés ou le crochet” à l'aide de VIM?
De la compilation (ou l'exécution) d'un programme en perl avec une gamme inégalée des accolades ("[ ]") ou de la portée des accolades ("{ }") la cause de la "manquant droit bouclés ou le crochet" erreur de syntaxe. Perl souvent des rapports de la source de votre dernière ligne de code ("expressions du FOLKLORE"), qui pourraient être loin de la pièce manquante.
Exemple perl message d'erreur:
Missing right curly or square bracket at ./foo.pl line 100, at end of line
syntax error at ./foo.pl line 100, at EOF
Execution of ./foo.pl aborted due to compilation errors.
Comment puis-vi ou Vi improved (VIM) aux utilisateurs de résoudre ce message d'erreur? J'ai ajouté une réponse avec quelques VIM améliorations. S'il vous plaît ajouter vos propres idées, de pratiques, ou de vi plugins.
REMARQUE: Original question posté avec VIM version qui ne mettent pas en évidence de perl, les accolades et les crochets. Nombreuses versions les plus récentes; voir vim.org pour plus d'info.
Le système d'hébergement de ces outils n'a pas été mis à jour ou maintenus dans quelques années. (En essayant de penser à une autre raison, mais c'est vraiment pas plus compliqué que ça.) Je vais essayer une version plus récente sur un autre système et mise à jour de la version commentaire.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Comment faire pour résoudre cette erreur maintenant:
Dans VIM, choisissez une ouverture {, [, ou le symbole. Le
%
commande sauts correspondance entre { }, [], ( ) paires. Les incohérences de sauter à un endroit inattendu.Installer perltidy, exécuter, et de rechercher curieusement en retrait des blocs de code.
Comment éviter les erreurs futures:
StackOverflow question 719476 montre comment modifier VIM corset/support de coloration de la syntaxe pour des croisillons supports. (Certaines versions ne pas le faire par défaut.)
Karl Guertin la Fermeture du plugin auto-matches [, (, {, ", " symboles saisis.
perltidy script reformate perl pour des raisons de lisibilité, ce qui peut exposer incompatibles symboles.
Utilisateur payé nerd a déclaré: "l'Utilisation perltidy au sein éditeur VIM avec nmap."
nmap \g mt:%!perltidy<CR>'t
Utilisation conforme {} correspondant à l'indentation (pointe générale, non spécifique à cette erreur perl).
ou
OriginalL'auteur
Vous pouvez utiliser le % commande pour correspondre à croisillons/crochets/parenthèses dans vim. Afin de l'utiliser pour rechercher inégalée caractères.
OriginalL'auteur
J'ai constamment l'utilisation perltidy pour reformater mon code. Quand j'ai reformater le code qui manque un terminator, un code supplémentaire, tirets étrangement et je peux rapidement trace vers le haut pour localiser le problème.
Bonus: - je utiliser cette cartographie instantanément reformater le fichier et ne pas perdre la position du curseur:
OriginalL'auteur
Utilisation padre. Cliquez sur Perl->Trouver Inégalée Corset. Il déplace le curseur à droite du problème.
Je suis venu sur cette page avec le même problème. À l'aide de perltidy et vim ont été d'aucune aide, le retrait avait l'air bien après perltidy. J'avais ouvert accolade avant un " sub " de mot-clé pour une raison quelconque. Padre résolu le problème en un seul clic.
http://padre.perlide.org/
OriginalL'auteur
utilisation de la syntaxe, vim presque toujours obtenir ce droit, et a une très sophistiqué syntaxe de perl en soulignant régime.
:syntax on
Je ne crois pas que ça va. La coloration syntaxique vraiment ne fait ouvrez les guillemets apparente.
OriginalL'auteur
Il semble que vous pouvez parler d'une situation d'enseignement, auquel cas l'enseignement d'une bonne indentation permettra de résoudre la plupart de ces questions.
Cependant, parfois, je suis sur un serveur avec pas de subtilités, comme vim et perltidy, et j'utilise un rapide n'dirty technique pour trouver l'erreur de syntaxe - il suffit d'ajouter un droit bouclés à différents points dans votre code jusqu'à ce que la ligne de changement de numéro, et il y a vos ennuis.
OriginalL'auteur
Si vous ne voyez pas manque des accolades :
En remplaçant \r \n peut aider à résoudre ce problème si le fichier créé dans windows et essayer de les utiliser sous Linux.
OriginalL'auteur
J'ai eu cette erreur dans un script qui semble avoir parfaitement adapté bouclés et des crochets... sauf que j'avais utilisé bash-la syntaxe de style qui, de fait, a commenté la deuxième moitié d'une ligne (avec la deuxième moitié d'une accolade paire).
L'erreur a disparu lorsque j'ai modifié cette ligne:
:
OriginalL'auteur
Utiliser une expression régulière pour affiner où le code incriminé. Exemple d'utilisation de shell, pcregrep
divers
90
que nécessaire pour limiter la longueur du bloc avant d'attendre la fin d'un corset.OriginalL'auteur