7

ハードタブをインデント文字として使用する方法でvimをセットアップしているが、配置にスペースを使用している人はいますか? 私が抱えている問題は、次のような継続行を開始するときです

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */
|-------|-------   whatever  /* some additional alignment added automatically */

、次にcin(これは私にとって必須です)位置的に好みの方法で配置を追加しますが、この配置はできるだけ多くのハードタブを使用して作成され、残りをスペースで埋めます(視覚化しようとしたように).

つまり、要するに、インデントアライメントcinを実際に区別していないようです。上記の例で追加されたすべての配置がスペースであることを本当に望んでいます。これにより、一時的に切り替えるときにアライメントが正しく保持されます。ts

もう一度明確にするために、次のコードを記述できるようにしたいと思います。どの行でも最初の空白以外の文字の前に<TAB>または<SPACE>を押すことはありません (手動でシフトしたり、何もしたりしません)。

void foo(int bar)
{
|-------somestatement;
|-------if (somecondition && (someothercondition ||
|-------                      whatevercomesnext))
|-------|-------dosomething;
}

私はすでに を試しましたが、ソフトタブで整列された行を編集ctab.vimすることに焦点を当てています.手動の整列は、タブ幅のステップの改良ではなく、1ステップの改良を提供するタスクであるため、私にはばかげているようです. タブとスペースを組み合わせて配置する方法は変更していません。cin

それを達成するための組み込みの方法を見つけることができませんでした。おそらくまだ、1 つがありますか?とにかく、それを行うプラグインがあるとは思えません。確かに私は自分でvimスクリプトを作成しておらず、十分な経験がないかもしれませんが、試したほとんどのプラグインはエディターの構成を台無しにしただけだと言わざるを得ません...

4

2 に答える 2

3

:set cino=(1 に加えて、'preserveindent' および 'copyindent' オプションにまだ遭遇していない場合は、それらにも興味があるかもしれません。それらは問題を完全に解決するわけではありませんが、何らかの方法で解決します。助ける方向。

于 2011-12-13T20:51:15.147 に答える
1

わかりました、質問してすみません。やっと良い素材を見つけました。

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

要約すると、現在の vim は、これを快適に行うのに十分なほど柔軟ではありません。

私の回避策は現在使用して:set cinoptions=(1おり、継続行を開始するときに配置単位を1つだけ追加します。:set ts=1このようにして、追加されたアラインメントがスペースであることを確認し (少なくとも私がそうしなかった限り)、適切な量のスペースを手動で追加することができます。これは速度の点ではまだ問題なく、私にとって最も気を散らす動作ではないようです!

于 2011-12-13T18:15:37.123 に答える