15

「=」および関連コマンドを使用してVIMにJavascriptをインデントさせようとしています。たとえば、次のように自動インデントしようとすると:

   new function($) {
     $.fn.setCursorPosition = function(pos) { 
       if ($(this).setSelectionRange) {
         $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
         var range = $(this).createTextRange();
         range.collapse(true);
         range.moveEnd('character', pos);
         range.moveStart('character', pos);
         range.select();
       }

結果はかなりばかげています。

       new function($) {
       $.fn.setCursorPosition = function(pos) {
       if ($(this).setSelectionRange) {
       $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
       var range = $(this).createTextRange();
       range.collapse(true);
       range.moveEnd('character', pos);
       range.moveStart('character', pos);
       range.select();
       }

を設定しset syntax=javascript、次のように設定filetypeしました:

filetype detection:ON  plugin:ON  indent:ON

私はこれのすべての順列を試しましたが。smartindentautoindent、およびのすべての順列を試しましたcindentが、Vim に期待されるインデントを与える正しい効果があるようには見えません。を設定しましtabstop=4た。

javascript.vim、およびをインストールしましIndentAnythingたが、効果がないようです。

JavaScript で Vim を適切にインデントする方法についての提案があれば、非常に感謝しています。

4

7 に答える 7

10

ああ、私はちょうど同じ問題を理解するのに数時間を費やしました.

持っている場合filetype indent on(そうしている場合)、いくつかの異なるインデント設定がどこかのファイルによって設定されている可能性があります。使用verbose set <option>?すると、設定されている場所と設定されている内容を確認できます。

:verbose set autoindent?
:verbose set cindent?
:verbose set smartindent?
:verbose set indentexpr?

デフォルトではcindent、デフォルトのインデント ファイルによる設定のみが期待されます。

cindent
Last set from $VIMRUNTIME/indent/javascript.vim

$VIMRUNTIMEを実行したときに得られるパスはどこにありますか:echo $VIMRUNTIME

他のすべては、(vimrc またはプラグインで) 有効にしない限り設定されません。

identexpr私にとっては、この問題を設定して引き起こしているプラ​​グイン (eclim) がありました。

identexpr=EclimGetJavascriptIndent(V:lnum)
Last set from ~/.vim/bundle/eclim/indent/javascript.vim
于 2013-09-07T06:57:19.273 に答える
5

私はしばらく前に同じ問題を抱えていましたが、解決策はプラグイン「vim-javascript」でした。構文とインデントのプラグインを提供する vim の JavaScript バンドルです。

https://github.com/pangloss/vim-javascript

インストールは非常に簡単です。

病原体を使用している場合は、次の手順を使用します。

  cd ~/.vim/bundle
  git clone https://github.com/pangloss/vim-javascript.git

vundleを使用している場合は、次の手順を使用します。

次の行を vimrc ファイルに追加します。

Plugin "pangloss/vim-javascript"

そしてそれをインストールします:

:so ~/.vimrc
:PluginInstall
于 2014-06-18T14:17:30.413 に答える
4

vi{プラグインなしのgvim 7.2で、2つの閉じ中括弧を追加し、適切な自動インデントを提供してブロック全体を選択しました。--nopluginsコマンドラインでフラグを付けてvimを起動することで、誤ったプラグインがそれを台無しにしているかどうかを確認したい場合があります。そしてさらに試みる。

于 2010-07-11T17:34:48.573 に答える
3

私にとってはうまくいきます(あまり役に立たないステートメントです、私は知っています;-))。ファイルタイプが正しく検出されていないと思います。

何をしますか

 :set filetype

いう?「javascript」を報告する必要があります。

[編集]ヒント:「filetype」というオプションと:filetypeというコマンドがあることに注意してください。オプションのヘルプを取得するには、コマンドdo:help:filetypeに対して:help'filetype'を実行します。

于 2010-07-12T11:14:14.787 に答える
3

先日、MacVim 7.2 と Lua ファイルが正しくインデントされないという問題set syntaxset filetypeありfiletype indent onました。

追加することを発見しました:

filetype plugin indent on

.gvimrc少なくとも私にとっては、私のファイルに問題を解決しました。YMMV。

于 2010-07-12T11:45:20.843 に答える
3

「それは私のために働く」のような役に立たないことを言うのは嫌いですが、そうです。.vimrc に何も入れず、すべてのプラグインをオフにしても、正しいインデントが得られます。

new function($) {
    $.fn.setCursorPosition = function(pos) { 
        if ($(this).setSelectionRange) {
            $(this).setSelectionRange(pos, pos);
        } else if ($(this).createTextRange) {
            var range = $(this).createTextRange();
            range.collapse(true);
            range.moveEnd('character', pos);
            range.moveStart('character', pos);
            range.select();
        }

スイッチを使用してvimをロードし--noplugins、.vimrcを一時的に移動/名前変更して、まだ機能しないかどうかを確認しましたか? .vimrc または別のプラグインの別の設定が競合を引き起こしている可能性があります。

于 2010-07-11T17:38:46.100 に答える