[解決済み] Vimのタブとスペースの設定
質問
Vim はタブとスペースの選択に関して非常に親切です。私が理解しているように
tabstop
の設定はタブ文字の幅を示します。そのため
shiftwidth
を使用した場合に、何列分増加/減少させるかを指定します。
<<
と
>>
コマンドに対して
softtabstop
を押したときに挿入される空白の量に影響します。
タブ
キーを押したときに挿入される空白の量に影響します。もし
expandtab
がオンの場合、タブキーは
softtabstop
の数の空白文字を挿入する。一方
expandtab
をオフにすると
タブ
を押すと、そのキーにマッチする最小の数のタブとスペースが挿入されます。
softtabstop
. (間違っていたら訂正してください)。
この最後のポイントによって、私は不思議に思いました。
shiftwidth == tabstop && tabstop == softtabstop
? 思いつきませんね。私に関する限り、1回の割り当てでこれら3つをすべて同じ値に設定できれば、最も便利でしょう。
:set stab=4
というように、実行することと同じになる。
:set tabstop=4 softtabstop=4 shiftwidth=4
どなたか、どのようにしたらこのようなことができるかを提案していただけませんか?
アップデイト
からのこれまでの返信に感謝します。 php が多すぎる , ホッブズ と kaiser.se . それぞれに返信するよりも、ここで質問を更新しています。
expandtab をオフにした状態での Softtabstop
上で、expandtab をオフにした場合、Tab キーを押すと、以下の条件に一致する最小の数のタブとスペースが挿入されると述べました。
softtabstop
. 私はそれを支持しますが、私が何を意味するのかを説明する必要があると思います。いくつかの例を使って説明しましょう。フォローするために、次のように実行します。
:set list
を実行し、タブ文字を見ることができるようにしてください。
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
挿入モードでは、タブキーを押すと2つのスペース文字が挿入されます。2 回目にタブキーを押すと、さらに 2 つのスペース文字を挿入する代わりに (合計 4 つのスペース文字)、前の 2 つのスペース文字を 1 つのタブ文字で置き換えます。Tabstopは4に設定されているので、1つのタブ文字は4つのスペースと同じ幅を持っています。
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
挿入モードでは、タブキーを押すと、タブ文字1文字とスペース2文字が挿入されます。タブ文字の幅は4なので、全体の幅は6となり、これを3文字で実現します。2回目にタブキーを押すと、タブ文字が2つ挿入され、前に挿入された2つのスペースが削除されます。合計の幅は12で、これは3文字で達成されます。
これらの例の両方で、Vim は softtabstop に一致する最小限の数のタブ+スペース文字を挿入しています。
expandtab をオフにして作業している場合、softtabstop を tabstop と異なる値に設定することによって達成できるような、よりきめ細かい制御を望んでいるようには見えません。それでも、私が設定できるようにすることは有用でしょう。
tabstop
,
softtabstop
と
shiftwidth
を1つのコマンドで同じ値に変換します。
expandtab は softtabstop を冗長にしていますか?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
挿入モードでは、タブキーを押すと4つのスペースが挿入されます。delete キーを押すと 1 つのスペースが削除されます。したがって、誤ってタブ キーを押した場合は、4 回バックスペースする必要があります。
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
挿入モードでは、Tabキーを押すとスペースが4つ挿入されます。バックスペースキーを押すと、4つのスペースが削除されます。
もし私が
expandtab
をオンにして作業している場合、delete キーが、tab キーが挿入するのと同じ量の空白を削除することを望みます。ですから、この場合も、同じ値を
tabstop
,
softtabstop
と
shiftwidth
を同時に使用します。
ショートカットがあるとやはり便利
Vim が多くの柔軟性を提供するのは素晴らしいことですが、自分にはそれが必要だとは思えません。タブの幅と、「ハード」タブ (タブ文字を使用) か「ソフト」タブ (スペースで構成) かを選択できるようにしたいだけなのです。ハードタブとソフトタブの切り替えは簡単です (
:set expandtab!
のように、3つの異なるパラメータをいじらずに、タブの幅を設定するのがもっと簡単であればと思います。
そこで、私が提案したのは、以下のようなものです。
:set stab=4
のようなものを提案しましたが、私にはまだ良いように聞こえます。
どのように解決するのですか?
を作成する
stab
オプションを作成するのは簡単ではありませんが、私はこのコマンド/関数を作成し、あなたの
.vimrc
(または超整理されている場合はプラグインファイル) にドロップすることができます。使用方法
:Stab
を使用すると、インデントレベルと
expandtab
. もし、新しいインデントレベルを与えずにエンターキーを押すと、現在の設定がそのまま印刷されます。
.vimrcやプラグインファイルに書いてください。 コマンドを実行します! -nargs=* Stabを呼び出す Stab() 関数! Stab() let l:tabstop = 1 * input('set shiftwidth=') もしl:tabstop > 0なら expandtabも必要ですか? let l:expandtab = confirm('set expandtab?', "&Yes Filtern&No Filtern&Cancel") if l:expandtab == 3 " 中止しますか? 戻る endif let &l:sts = l:tabstop l:ts=l:tabstopとする。 l:sw=l:tabstopとする。 if l:expandtab == 1 setlocal expandtab さもなければ setlocal noexpandtab endif endif 選択されたオプションを表示する 試す モードメッセージの表示 set tabstop=' と入力します。 質問 をクリックします。 モードメッセージ シフト幅 質問 echon &l:sw モードメッセージ echon ' sts=' echohl Question echon &l:sts . ' ' . (&l:et ? ' : 'no') モードメッセージ エキスパンドタブ 最後に なし エンドトライ 終了関数
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] VimのTabキー==4スペースと中括弧の後の自動インデント
-
[解決済み] タブを4スペースに再定義
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimでexpandtabオプションがオンのとき、タブ文字を挿入する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Netbeans IDE用Vimプラグイン [終了しました]。
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vim 空白行の削除
-
[解決済み】vim - 行数を数えずに大きなテキストブロックを削除する方法は?
-
[解決済み] NERDTreeで拡張子によるファイルのフィルタリングを行うには?
-
[解決済み] カーソル下の1単語を置換する方法は?
-
[解決済み] 既存のウィンドウを新しいタブに移動するにはどうすればよいですか?
-
[解決済み] Vimで、regexpの "the \b "のような単語境界文字はどのように検索するのですか?
-
[解決済み] Vimの空白の優先順位をファイルタイプで設定する
-
[解決済み] vimでファイルを開いた後、バックディレクトリのブラウズに移動する