編集された行に対してのみクリーンアップコマンドを実行できますか?


8

以下の質問で詳述されているようなクリーンアップタスクを参照します(これに限定されません)。

実際に変更されたファイルの行のみにこれらのコマンドを適用する方法はありますか?これは、ソースコードを編集した後の実際の変更に焦点を合わせた差分出力を維持するためです(潜在的なコードレビューアーは、ファイル全体のクリーニングに関連する変更によって混乱しないでしょう)、新しい書式設定の問題は発生しません。


vim.wikia.com/wiki/… ...始めるのに最適な場所かもしれません...完全な回答を今すぐ書く時間はありません;-)
Martin Tournoij

リンクの@CarpetsmokerのTHX
グイド・

私はさらに掘り下げましたが、これは可能ではないと思います。:changes多くのハッカーなしでは機能しません。この情報はviminfoファイルに保存されているようで、このセッションで行った変更と以前の変更を確認する方法はありません...もちろん、viminfoファイルを無効にしない限り、かなり手間がかかります...ただし、ここでは間違っていることが証明されます:-)
Martin Tournoij、2015

@Carpetsmoker各セッションで行われた変更を分離できたとしても、変更リストにこの機能を実装するのに十分な情報が含まれていないと思います。変更ごとに1つのカーソル位置が含まれているため、行われた編集の範囲を知ることはできません。
リッチ

@リッチはい、私は同じ結論に達しました...
Martin Tournoij、2015

回答:


4

このコマンドfolddoopenを使用して、閉じた折り目にない行でのみコマンドを実行できます。

たとえば、次のコマンドを使用して、行末から空白を削除できます。

:%s/\s\+$//

これを現在閉じた折り目にない線にのみ適用するにはfolddopen、次のようにを追加します。

:%folddoopen s/\s\+$//

folddoopenに短縮することもできますfoldd

ソース管理の差分ツールとしてVimを使用している場合は、これを使用して、差分を表示しながら変更された行にのみ編集を適用できます。

デフォルトでは、Vimのdiffモードでは、変更された各セクションの前後に数行が表示されます。あなたが最初に設定する必要があります変更された行の前または後にそうためにすぐにあるラインに影響を与えないようcontextdiffoptする0例:

:set diffopt=filler,context:0

手動編集の場合は、foldopenオプションが役立つこともあります。折りたたみを開くコマンドの種類を定義します。ただし、コマンドのように折り目内で編集が行われるのを防ぐことはできませfolddoopen

(「実際に変更されたファイルの行」という意味の場合は、コマンドを実行する前に、変更されていない行を折りたたむ方法を見つける必要があります。最も簡単な方法は、変更されていないコピーを保持することですファイルの手動でvimdiffを使用します。)


2
これはとてもクリエイティブなアイデアです!について知りませんでしたが:folddoopen、とても便利なコマンドのようです。また、fugitive.vimを使用すると、:Gdiffコマンドを使用して現在のバッファーの差分をより簡単に確認できることを提供したいと思いました。
tommcdo 2015

これはうまく機能します。私は、現在の差分を取っ前のリビジョンにスクラッチバッファを開くことができ:vsp new、その後、:read !git show HEAD~1:pathそして最後に:windo diffthis(そして、あなたのソリューションを使用して)。
guido
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.