VimでインラインJavaScriptインデントを適切にインデントできないようです。以下を検討してください。
$(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は、2番目のケースで示されている閉じ中かっこを自動的にインデントすることを主張しているようです。ファイル全体を再度インデントすると、同じように動作します。最初のケースで見られたより標準的なJSインデントスタイルを使用して自動的にインデントするにはどうすればよいですか?
使用 JavaScriptインデント:JavaScriptインデンター(HTMLインデントが含まれます) プレストンコプリビカ oligofren からのヘッズアップをありがとう-彼に賛成票を入れてください。
最も包括的でバグのないJavascriptインデントスクリプトは Preston Koprivicaによるもの です。 提案された回答にあるいわゆるOOPスクリプトには重大なバグがあり、角かっこを含むコードを適切にインデントしません。
上記のスクリプトは、jQueryでよく使用されるクロージャー構文を正しくフォーマットしません。
$(function() {
// only one level of indentation, not two
});
このスクリプトは私にとってはうまく機能します: http://www.vim.org/scripts/script.php?script_id=2765
これらの回答のほとんどは2009年のものであり、率直に言って、古くなっています。
vim-javascript は Prestonのスクリプトよりもはるかに新しく、最新です。
Vundle の使用をまだ開始していない場合、インストールは少し複雑になりますが、代替の問題に悩まされているようには見えません。
おそらく、これらの設定のいくつかの組み合わせが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
私も同じ問題を抱えていました。これは、すべてのJavascriptインデントスクリプトの中で最も優れています。
http://www.vim.org/scripts/script.php?script_id=184
IndentAnythingプラグインが必要です
http://www.vim.org/scripts/script.php?script_id=1839
追加のボーナスとして、Javascriptブロックをかなりきれいにするこのインデントスクリプトを書きました。デフォルトではデフォルトのhtmlインデンターを使用します(Javascriptブロック内ではIndentAnythingを使用)
誰かがここに来る場合は、vim-javascript
by pangloss
at https://github.com/pangloss/vim-javascript これまでのところ、Vim 7.4で役に立ちました。そして、oligofrenとCharles Roperによる上記のソリューションはそうしませんでした。
構文ファイルがJavaスクリプトのインデントが適切であると仮定して、ブロックを視覚的に強調表示して=を押します。これはJavaで機能するため、何か半分を実行すると予想されますJavaスクリプトの場合はまともです。結果はおそらくtabstop、expandtab、そして場合によってはシフト幅の設定にも依存します。
gqも便利です。インデントするのではなく、行をフォーマットします。
JavaScript専用のプラグインをインストールする必要はありません。インデント用の組み込みのVimオプションを学ぶことができます。 Vimにはかなりの数のオプションがあり、cindent
、smartindent
、indentexpr
のようなインデントスタイルには独自のオプションがあります。
cindent
またはsmartindent
またはindentexpr
を使用しているかどうかを確認するには、次のコマンドを実行します。
:set cindent?
:set smartindent?
:set indentexpr?
名前にもかかわらず、cindent
はCプログラムに適用されるだけでなく、Javascriptを含むほぼ同じ構文を共有する多くのプログラミング言語に適用できます。見て - :help C-indenting
これに関するドキュメント。特にこのような行で設定を調整できます。 :help 'cinoptions'
および :help cinoptions-values
。次に設定例を示します。
:au FileType js,javascript setlocal shiftwidth=2 softtabstop=2 cinoptions=j1,J1,(1s " see help cino-j cino-J cino-(