2011-10-27 9 views
0

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の使用法の慣例が不足していますか?

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

+1

はない 'dw'動作しますか?また、元の問題については、 'gwap'や' gqap'してはいけません。 – Benoit

+0

dwは回線にまたがっていません。 –

答えて

0

このコマンドが動作しているようです:

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

それは行と最後に新しい行の終わりまでの空白を削除するには置き換えを使用しています。この例では

testting     aad  $    
asdjkasdjsdaksddjk$ 

(コマンド:set listを使用vimの中でメタ文字を参照するため)

あなたが最初の行にカーソルを置き、最初のコマンドを使用している場合、それはからすべてを削除しますあなたはあなたのためにコメントを書式設定するために外部プログラムを使用する方がはるかに効率的であることに注意してください。特に、parは、テキストを編集し、それを所望の長さにラップする素晴らしい小さなCプログラムです。あなたがやろうとしているものを行うためにあなたのパスにparを、持っている場合

は40列に所望の幅であるコマンド

:!par 40pgr 

Shift+vとコメントのブロックを選択し、実行しているのと同じくらい簡単です。

もしあなたがハッキリしていると感じたら、好きなようにコメントを編集してC/perl/C++/pythonで独自のプログラムを作成し、それをパスに入れ、外部フィルタコマンド:!を使ってテキストブロックを処理してください。

+0

ニース、私はそれが広がることを期待していなかったが、その後それはした。 –

1

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

これはまた、'formatoptions'が正しく設定されていることを頼りにして、コメント文字が正しく処理されるようにしていますが、多くの場合、ftpluginは既にそれを行っています。

+0

これは、コメントの場合を具体的に知ることは本当に良いことです。パラグラフ中心ではない一般的なコードはどうでしょうか? –

+0

@wilsona、 'd/\ ze \ S '。これはVimのコマンドに関する素晴らしいことです。彼らはどんな動きでも動作します。 '/ \ ze \ S'は次の空白以外の文字の直前の位置を検索するので、' d'コマンドの動きとしてそれを使用します。 – jamessan

1

これはしばらくしているが、私は状況の90%にするために必要なものないコマンドがあることを見出し:

J -- join line below to the current one 
関連する問題