Vimでの編集中にさまざまな空白を削除する

たぶん、Vimで編集している間、空白が私に面倒を与えるさまざまな状況に遭遇します。たとえば、次のようなコメントがあるとします。

#This program was featured on the Today show, it is an algorithm for promoting world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

たとえば、X文字になるように行をトリミングしたい場合は、改行と改行を打った後で、これを得るために改行を一番上の行の途中に置くことになります:

#This program was featured on the Today show, it is an algorithm for promoting
world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

私は#をラインの先頭に付け加えてください。それはすべてうまくいくものですが、そのラインも整列したいと思っています。これを行うには、改行、次の行のインデント用のすべての空白、コメント#のマークを削除する必要があります。これを行うのにはかなり時間がかかりませんが、これと同様の状況はすべて1日分のコーディングになります。

上の例は非常に具体的ですが、私の質問はそうではありません。次の空白以外の文字まで、NEWLINESを含むすべての空白を削除するには、Vimの良い方法はありますか? Vimにすでに動きがある場合、これはすばらしいことになりますが、そうでない場合、誰かがキーにマップできる上記を行うのに使う好きなVim関数を持っていますか?少なくとも、私はこの事件について心配することさえできないようなVimの使用法の慣例が不足していますか?

編集:上記の場合に有効で適用可能な間、幅の書式設定は、この質問の焦点では​​ありません。私は、行の終わりに止まらない空白の削除をもっと気にしますが、代わりに次の行の最初の空白以外の文字を続けます。

0
dw は動作しませんか?また、元の問題については、 gwapgqap しないでください。
追加された 著者 Benoit,
dwは行にまたがっていません。
追加された 著者 A. Wilson,

3 答え

実際には、現在の 'textwidth' に合わせてそのコメントを再フォーマットしたいだけです。コメントが段落の場合(つまり、空白の行で区切られている場合)、 gqipgq は再フォーマットコマンド、 ip は "内部段落"テキストオブジェクト)を再フォーマットします。スタンドアロンの段落でない場合は、それらの行を視覚的に選択してから gq を使用します。

これは、コメント文字が正しく扱われるように 'formatoptions' が正しく設定されていることにもよりますが、ftpluginはすでにそれを行っています。

1
追加された
@wilsona、 d/\ ze \ S 。これはVimのコマンドに関する素晴らしいことです。彼らはどんな動きでも動作します。 /\ ze \ S は、空白以外の次の文字の直前の位置を検索するので、 d コマンドのモーションとして使用します。
追加された 著者 jamessan,
これは、具体的なコメントケースを知ることは本当に良いことです。パラグラフ中心ではない一般的なコードはどうでしょうか?
追加された 著者 A. Wilson,

これはしばらくしていますが、90%の状況で私が必要とすることを実行するコマンドがあることがわかりました。

J --  join line below to the current one
1
追加された

このコマンドはうまくいくようです:

:.s/\W*$\n\W*//g

replaceを使用して、行末までの空白と末尾の改行を削除します。

この例では:

testting                 aad        $            
asdjkasdjsdaksddjk$

(vimのメタ文字を見るには:set list コマンドを使います)

カーソルを最初の行に置き、最初のコマンドを使用すると、すべての行が削除されます(行頭を除いて$と改行を含みません)。

また、外部プログラムを使用してコメントを書式設定する方がはるかに効率的であることに注意してください。特に、 par はテキストを編集して希望の長さにまとめる小さなCプログラムです。

パスに par がある場合は、 Shift + v でコメントブロックを選択してコマンドを実行するだけで簡単に実行できます

:!par 40pgr

ここで、40は列の希望の幅です。

hackishを感じている場合は、独自のプログラムをC/perl/C ++/pythonで記述してコメントを編集し、それをパスに入れ、外部フィルタコマンド:!を使用してテキストブロックを処理しますそれを通して。

0
追加された
ニース、私はそれが広がることを期待していませんでしたが、それはしました。
追加された 著者 A. Wilson,