vimの中にどのような設定では、シェルスクリプトで#コメントをインデントするsmartindentの拒否を相殺しますか?
-
23-08-2019 - |
質問
私は最近、vimの7(以前vimの6)とsmartindent
の設定を使用して開始しました。私はそれがほとんど反生産的であるオープンブレース後にタブを入力するので、慣れているもののほとんどの部分については、それが、うまく動作します。
しかし、狂気の行動の一枚があります。シェルスクリプトを編集するとき、私は現在のインデントレベルでコメントを作成しようとするが、それとは何の関係もsmartindent
ありません。これは、コメントがレベル0(インデントなし)でなければならないと主張しています。彼らは動作しないように、さらに悪い何、それは右シフト(「>>
」と友人を)破ります。これはあからさまな反抗であり、私はそれを修正するための最良の方法は何知りたい?
(私もsmartindent
後then
をインデントについてif
の考えに熱心ではないよ。)
好ましい溶液は私のマニュアルバッシングが保存されます - 私は怠け者です。 1つのオプションは、「(残りのためにそれを残して)シェルスクリプトを編集するときsmartindent
をオフにするには、[だろう。別のオプションは、smartindent
と私は好きではない特性を変更するために編集するための制御スクリプトを見つける方法のガイドラインになります。 (私は方法についてのアドバイスを必要としない - それが最善である、またはのみ、正気を復元する方法があることだけヒントを)最後のオプション。未設定のsmartindent
を残すことです。
私は「(PHPと)迷惑vimのインデント解除のルールを」に漠然と関連の質問を見ました;多分そこに言及cindent
や関連アイテムが答えの一部は、実際にはあるけれども、それは、直接的な答えを私に提供しません。
解決
、インデントファイルを検索し(例えば/usr/share/vim/vim71/indent/sh.vim私のシステム上の)
この行は、問題のように見えます:
setlocal indentkeys-=:,0#
おそらく、あなたはあなたのの.vimrcでこの問題を解決することができたり、手動でカスタムインデントファイルをロードします。
編集:それは私が思ったよりも複雑に見えますが、多分、特にあなたが修正する必要があるだろうインデントファイルに設定されているものがある。
第二編集:私は完全に間違っていたように見え、チェックアウト:
ハッシュを入力した後にインデントを復元または
他のヒント
は、まあ、代わりに「:set cindent
」の「:set smartindent
」を使用することを含む、いくつかの選択肢を検討した後、私は単に「:set autoindent
」を使用して元に戻す終わってきました。おそらくそこ私はそれをしたい正確にこのようなものの作品を作るための方法がありますが、それは十分汚いと私は気にすることはできませんという手間のかかる十分です。私はその不正行為と見なすもので、私は、以前の20有余年にわたりautoindent
と罰金働いてきた、とsmartindent
が提供する余分な添えものからの利益が上回るされます。
あなたの援助のために、フアン、ありがとうございました。信じられないかもしれませんが、それは助けをした - 。非常に多くのことを
このフォローアップしながら、私はまた、しかし、他のきちんとしたコマンドのカップルを発見します:
>i}
>a}
これらの右シフトあなたがしているコードのブロックを「i
」バージョンのインデント体ではなく決算かっこ(私の好みのスタイル)、および「a
」バージョンは、(バージョンに閉じ括弧をインデント仕事で)必要なます。
また、あなたがシェルで実行されたコマンドの「%
」に修飾子を適用することができます:
:make %:r.o
これは「%:r
」に続いて(つまりは「.o
」です)現在のファイル名の「ルート」上でmakeを実行します。私はsomefile.c
を編集していた場合や、他の言葉で、これはmake somefile.o
を実行します。
あなたの.vimrcに以下の行を追加します。
上のファイルタイプのインデント
(それはファイルタイプに応じて右インデントモードを設定します)
私は「上のファイルタイプのインデントが」あなたのvimrcに設定されている場合、オートインデントとsmartindentの両方が不要であることを実現するまで、長い時間のために、この同じ問題を持っていた - インデント/ sh.vimを使用しています「に関するファイルタイプのインデント」(または任意の言語)インデントルールを把握するためにあなたのvimのディレクトリ内のファイル、およびオートインデントとsmartindentの両方がそれを妨げることができます。
私はSHでこれをテストしていませんが、perlは突然私が切り替わったときに、正しく動作し始めます。
追記:フアンのリダイレクト、良い解決策ではありません「ハッシュを入力した後インデントの復元」 - それは1つの状況(内のコードを入力して)問題を修正しない一方で、それは編集者がそれを考えてどのように変化していませんが、ののように再インデント(視覚=、または正常==)は背面左にそれを押し込むだろう、インデントされなければならない。
私は自分の.vimrcに次の行を持っていると私は、問題を観察しません。
set smartindent
inoremap # X^H#
私はこの2行の後にのセットオートインデントを持っていたが、それは効果がありませんようです。
はい、それは、の非常にの迷惑です。 smartindentは本当に唯一の言語のようなCのためです。 私は時の言語に基づいて適切なインデントを有効にする方法を参照してください: http://www.pixelbeat.org/settings/.vimrcする
前の回答示唆ます:
:#のX inoremap ^ H#
優れたものです。 「:ヘルプsmartindent」それは、VIMのドキュメントによって提案答えです。 ^ HはCTRL-V CTRL-Hを使用して入力されることに注意してください。ドキュメントから関連するセクションは以下の通りです。
When typing '#' as the first character in a new line, the indent for
that line is removed, the '#' is put in the first column. The indent
is restored for the next line. If you don't want this, use this
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.