Je n'arrive pas à insérer correctement le Javascript en ligne dans Vim. Considérer ce qui suit:
$(document).ready(function() {
// Closing brace correctly indented
$("input").focus(function() {
$(this).closest("li").addClass("cur-focus");
}); // <-- I had to manually unindent this
// Closing brace incorrectly indented
$("input").blur(function() {
$(this).closest("li").removeClass("cur-focus");
}); // <-- This is what it does by default. Argh!
});
Vim semble insister pour indenter automatiquement l'index de fermeture montré dans le deuxième cas. Il en va de même si je réindente tout le fichier. Comment l'obtenir à indenter automatiquement en utilisant le style d'indentation JS plus standard vu dans le premier cas?
Utiliser JavaScript Indent: Javascript indenter (le retrait HTML est inclus) par Preston Koprivica. Merci pour le heads-up de oligofren - donnez-lui un vote positif.
Le script d'indentation Javascript le plus complet et sans bogue est celui de Preston Koprivica . Le script appelé OOP qui se trouve dans la réponse proposée présente de graves bugs et n'indente pas correctement le code qui est placé entre crochets.
Les scripts mentionnés ci-dessus ne formatent pas correctement la syntaxe de fermeture souvent utilisée dans jQuery:
$(function() {
// only one level of indentation, not two
});
Ce script fonctionne mieux pour moi: http://www.vim.org/scripts/script.php?script_id=2765
La plupart de ces réponses datent de 2009 et, franchement, sont périmées.
vim-javascript est beaucoup plus récent et à jour que le script de Preston.
L'installation est un peu plus compliquée si vous n'avez pas encore commencé à utiliser Vundle , mais cela ne semble pas souffrir des problèmes liés aux alternatives.
peut-être qu'une combinaison de ces paramètres devrait être dans votre fichier VIMRC.
syntax on
set syn=auto
set showmatch
filetype on
filetype plugin on
filetype indent on
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
J'ai eu le même problème. C'est le meilleur de tous les scripts d'indentation Javascript:
http://www.vim.org/scripts/script.php?script_id=1840
Il nécessite le plugin IndentAnything
http://www.vim.org/scripts/script.php?script_id=1839
En prime, j’ai écrit ce script de retrait qui rendra les blocs Javascript assez jolis. Il utilise le pénétrateur html par défaut (et celui IndentAnything dans un bloc Javascript)
Au cas où quelqu'un viendrait ici, veuillez noter le vim-javascript
par pangloss
à https://github.com/pangloss/vim-javascript m'a aidé jusqu'à présent, c'est-à-dire Vim 7.4. Et les solutions ci-dessus d'Oligo et de Charles Roper ne l'ont pas été.
En supposant que le fichier de syntaxe comporte un bon retrait pour le script Java, mettez en évidence le bloc visuellement et appuyez sur =. Cela fonctionne pour Java alors je m'attendrais à ce qu'il fasse quelque chose de décent pour le script Java. Les résultats dépendent probablement aussi des paramètres de tabstop, expandtab et peut-être shiftwidth.
gq est utile aussi, il met en forme les lignes plutôt que de les mettre en retrait.
Vous n'avez pas à installer de plugins spécialisés pour Javascript, vous pouvez apprendre les options Vim intégrées pour l'indentation. Vim a pas mal d'options, et certains des styles de retrait tels que cindent
, smartindent
et indentexpr
ont des options qui leur sont propres.
Pour vérifier si vous utilisez cindent
ou smartindent
ou indentexpr
, exécutez:
:set cindent?
:set smartindent?
:set indentexpr?
Malgré son nom, cindent
ne s’applique pas uniquement aux programmes C, il peut s’appliquer à plusieurs langages de programmation qui partagent à peu près la même syntaxe, y compris Javascript. Regardez :help C-indenting
pour plus de documentation à ce sujet. Vous pouvez ajuster les paramètres en particulier avec une ligne comme celle-ci, voir :help 'cinoptions'
et :help cinoptions-values
. Voici un exemple de configuration:
:au FileType js,javascript setlocal shiftwidth=2 softtabstop=2 cinoptions=j1,J1,(1s " see help cino-j cino-J cino-(