Vimエディターで一連の行の空白を削除する


12

ファイルに次のようなテキストが含まれています。

  sample text
    some random text
            even more random text
text with no indent
 worst indention

各行の前の空白を削除する必要があります。私がしていることは一行です 0dw

を使用して同じコマンドを繰り返すことができます。しかし、次の行に手動で移動することによって。

しかし、それらの行のブロックに「0dw」を適用する方法はありますか?

マクロを使う方法はあると思いますが、これまで使ったことはありません。しかし、他に選択の余地がない場合、私はそれらを学びたいと思っています。


+1いい質問です。結局同じことをたくさんやります。そして、サイトへようこそ。
サルダトリオン-SEの乱用に対して2012年

回答:


10
:%s/^\s\+
" Same thing (:le = :left = left-align given range):
:%le

詳細については、http://vim.wikia.com/wiki/Remove_unwanted_spacesをご覧ください。

これを特定の範囲の行に対して実行する場合:

:19,25s/^\s\+//

ところで、vimの学習を開始する最良の方法は、vimtutorコマンドを実行することです。VimエディターでVimを使用する方法がわかります。


1
:leは
素晴らしかっ

3
vimtutorの言及と良い答えの+1。
サルダトリオン-SEの不正使用に対する反対2012年

1
を使用Vしてカーソルを移動し、関連する行を選択して、行選択を展開します。次にを押す:と自動的にが入力され'<,'>、そこからNikhilの正規表現を使用できます。
UncleZeiv 2012年

1
ある範囲の行を実行する別の方法(常に行番号を忘れてしまうため)は、2つの行にマークを付け、そのマークを操作することです。たとえば、19行目に移動して「ma」を押し、25行目に移動して「mb」を押してから、を実行します:'a,'bs/^\s\+//
Patrick

7

これを行う別の方法は、VIMのインデントツール(通常は</にバインドされている>)を使用することです。最初に、影響を受ける行を示す方法が必要です。視覚的な選択モードまたは影響を受ける行の範囲を指定する他の方法を使用してから、任意の数またはインデントレベルを使用して削除できます。9<通常は、現在の行から9レベル以上のインデント(タブ/スペース)を削除するためのトリックを非常にうまく実行します。


3

私はこれを簡単な次のステップで行うアプローチを持っています:

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

3番目のステップの説明:

0 行頭に移動します。

dw 単語(空のスペース)を削除します。

normalコマンドを適用し0dwます。

'<,'> ビジュアルモードで、選択したすべての線の法線を繰り返します。


1

ctrl+vあなたが望むものに似ているが正確ではない何かをすることができます ビジュアルブロックを選択して、1つのコマンドをロットに適用できます。


2
ブロックモードでそれらの行を選択し、このコマンドは機能しました:: '<、'> normal 0dw
saiy2k

1
@ saiy2k :normalはここで重要なことであり、ここでの最良の答えだと思います。回答として投稿していただけませんか?
Gilles 'SO-悪をやめる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.