PHP コードを編集するとき (その言語に固有のものかどうかはわかりません)、複数行にまたがるコンマ区切りのリストの途中に新しい行を作成すると、インデント ルールによって、残した行が常にインデント解除されます。これがそのビデオです。これは、配列、関数の引数リストなどで発生します。
これが起こらないようにするために私にできることはありますか、または上に移動し、再インデントし、下に移動し、再インデントするよりも早くエラーを修正する方法はありますか (行を離れるとクリアされるため)、続行しますか?
PHP コードを編集するとき (その言語に固有のものかどうかはわかりません)、複数行にまたがるコンマ区切りのリストの途中に新しい行を作成すると、インデント ルールによって、残した行が常にインデント解除されます。これがそのビデオです。これは、配列、関数の引数リストなどで発生します。
これが起こらないようにするために私にできることはありますか、または上に移動し、再インデントし、下に移動し、再インデントするよりも早くエラーを修正する方法はありますか (行を離れるとクリアされるため)、続行しますか?
インデントは、PHP インデント スクリプト (.vimrc の「filetype indent on」) によって制御されます。PHPのインデントにこれらのオプションを使用します~/.vim/after/ftplugin。
setlocal autoindent
setlocal cindent
setlocal cinwords=if,else,elseif,do,while,foreach,for,case,default,function,class,interface,abstract,private,public,protected,final
setlocal cinkeys=0{,0},0),!^F,o,O,e
setlocal nosmartindent " don't use smart indent option
このトピックについては、ソースのインデントに関する vim wiki ページに詳細があります。
:set indentexpr=""それが役立つかどうか試してみてください。ファイルタイプのプラグインを扱うセクションについては、を参照:help filetype-indent-offしてください (おそらく、この indentexpr の由来はここにあります)。
これを試して:
:let g:PHP_default_indenting=1
を参照してください:h php-indent。
おそらく indentkeys を見たいと思うでしょう
たとえば、最近のデフォルトは次のとおりです。
indentkeys=0{,0},:,0#,!^F,o,O,e,*,<>>,,end,:
php.vim インデント ファイルを見つけます。例 /usr/share/vim/vim73/indent/php.vim
次に、次の行を探します。
elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$'
let lnum = lnum - 1
次のように、先頭に引用符を付けてコメントアウトします。
"elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$'
" let lnum = lnum - 1
それで直ります!PHP タグを開く際のインデント解除はもう必要ありません<?
私はcindentすべてを台無しにして、smartindent通常はあなたが望むものだと思います。
これを入れてみてください~/.vim/filetype.vim:
au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent
あなたもできる
set cindkeys=-0#
# 文字の場合。次のようなcss宣言で発生したのと同じ問題が発生している場合
width: 100%
同様に左にシフトして、追加することができます
set cindkeys-=:
通常モードで「o」を使用すると、問題が回避されるようです。挿入モードからのヒット<esc>oは最適ではありませんが、(上記のように) 難しい方法よりは優れています。