コマンドを使用して、ソースファイルのすべてのタブを自動的に解除する方法はありますか?[閉まっている]


11

その後、自動的に再インデントするには?ある端末画面から別の端末画面にコードをコピーしようとしましたが、表がすべてめちゃくちゃになりました。

私はこの機能を何と呼ぶべきかわからなかったので、グーグルで見つけるのが難しかった(これは一般的にタブサイズの設定方法に関連するものを返しましたが、残念ながら私が探していたものではありませんでした)。



1
この質問はプログラミングツールに関するものであるため、トピック外として締めくくります。ツールに関する質問は、StackOverflow、またはこの場合はVi.SEに適しています。ただし、この質問は移行するには古すぎます。

1
この質問は特定のツールの使用に関するものであり、Stack Overflowまたは(現在の質問の場合は)vi.seで尋ねられるべきだったので、トピック外として閉じることに投票します。

回答:


9

Vimには、retabドキュメントをタブ化またはタブ化解除できるコマンドがあります。tabstopやなどの設定を使用しますexpandtab。したがって、タブをスペースに置き換えたい場合は、次のようにします。

:%retab

詳細については、retabドキュメントを参照してください。

警告エンプター:これは、行の先頭にないタブも置き換えます。したがって、文字列の途中でハードタブを使用すると、それらも同様に置き換えられます。


3
一般に、文字列に真のタブを含めることは悪い考えと考えられています。それでも発生する可能性が\tありますが、この種の問題を回避するためだけに推奨されます。
スペンサーラスバン2011

6

@Kalebの回答(まだコメントする担当者がいない)を拡張するには、retabコマンドを実行する前に、を実行する必要があります:set expandtab (set et)。それ以外の場合、retabはタブをスペースに置き換えません。

さらに、タブストップを指定することもできます。多くの場合、他の人が作成したソースコードでは、タブストップを4または2に設定してコードを記述し:%retabます。コマンドを実行する前に、さまざまなタブストップを試してください。やってみる

:set ts=8 (the default)
:set ts=4 
:set ts=2  

どの設定が最も意味があるかを確認します。

後方に移動するには(スペースを適切なTAB文字に置き換えるには、

:set noet
:%retab!

1

タブを解除するとは、タブをスペースに変更することですか?その場合は、次のようにバッファ全体のタブをスペースに置き換えます。

:%s/^I/    /g

これは置換の右側にある4つのスペースですが、好きな数にすることができます。リテラルの^Iタブ文字を取得するには、^V次にTabキーを押します。

=コマンドを使用して、インデントを再設定できます。バッファの内容全体をインデントするには、次のコマンドを使用します。

gg
=G

これにより、上に移動し、すべてを下にインデントします。


-1:固定数のスペースでタブを置き換えることはほとんど役に立ちません。それは非タブが先行するタブを含むすべての行の外観を変更します。
kevin cline '09
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.