web-dev-qa-db-ja.com

Vimの行の前にある任意のスペースをすべて削除します

XMLタグの解析に関するプラグインを作成しました。タグ内のコンテンツはインデントされ、解析された文字列をファイルにコピーすると、次のようになります:

    Example line
        This is part of the parsed line
        Thats goes one
    End of line

私が望むのは、これらの行の前にあるすべてのスペースを削除することです、最終的なテキストは

Example line
This is part of the parsed line
Thats goes one
End of line

=を使用しようとしましたが、希望どおりに動作しません。どうすれば最小限のキーストロークでそれを行うことができますか?

46
Fatih Arslan

行を左にフォーマットするには、:leftを使用します。ファイル全体でこの形式を使用します。

:%le
132
Peter Rincker

簡単な検索/置換s/^\s*//はトリックを行う必要がありますが、おそらく最小バージョンではありません。

12

個人的には、Vで行を視覚的に選択し、99< toテキストを可能な限り左にプッシュします。

9
Randy Morris

各行の先頭にdに続いてwに続いてjを入力するだけです。

5
Simon

これはどう:

:%s/^ *//

または、vimスクリプトソリューションをお探しですか?

4
chris

指定された行番号(5行目から10行目など)で初期のスペースとタブを削除するには、

:5,10s/^\s*//
1
MayurKubavat

LukášLalinskýによって提案された検索/置換またはwikiaページの%leアプローチは、おそらく私が行う方法ですが、別の代替手段としても実行できます。

:%< 99

ファイル全体(%)を左に99回シフトする簡単な方法として。

0
DrAl

これを実現するさらに別の方法は、通常のコマンド:h :normal-range

:%norm d^

これは各行の列0に移動し()、最初の非白文字(^)まで削除します(d)。

これは受け入れられる回答として入力するのが少し多くなりますが、追加のコメント解除など、より複雑なシナリオを念頭に置いている場合は簡単に拡張できます:

:%norm d^I# 

その結果:

#Example line
#This is part of the parsed line
#Thats goes one
#End of line
0

連続するすべてのスペースを削除します::%s/ */ /g

私から行くのは便利でした:

$screen-xs-min:              480px;
$screen-sm-min:              768px;
$screen-md-min:                992px;
$screen-lg-min:                  1200px;

に:

$screen-xs-min: 480px;       
$screen-sm-min: 768px;       
$screen-md-min: 992px;           
$screen-lg-min: 1200px;                                                                                                 
0
Dorian