Mengacu pada tugas pembersihan seperti (tetapi tidak terbatas pada) yang dirinci dalam pertanyaan ini:
apakah ada cara untuk menerapkan perintah-perintah itu hanya baris file yang benar-benar dimodifikasi? Ini untuk menjaga agar keluaran diff terfokus pada perubahan aktual setelah mengedit kode sumber (kode-resensi potensial tidak akan bingung dengan perubahan yang terlibat dalam membersihkan seluruh file), sementara tidak memperkenalkan masalah pemformatan baru.
:changes
tidak berfungsi tanpa banyak peretasan; karena tampaknya informasi ini disimpan dalam file viminfo, dan tidak ada cara untuk melihat perubahan mana yang Anda buat pada sesi ini, dan yang sebelumnya ... Kecuali Anda menonaktifkan file viminfo tentu saja, tapi itu agak berat ... ingin terbukti salah di sini, meskipun :-)Jawaban:
Anda dapat menggunakan perintah
folddoopen
untuk menjalankan perintah hanya pada baris yang tidak berada dalam flip tertutup.Misalnya, Anda dapat menghapus spasi dari ujung baris dengan perintah:
Untuk menerapkan ini hanya pada garis yang saat ini tidak berada dalam flip tertutup, tambahkan
folddopen
, seperti ini:folddoopen
bisa juga disingkat menjadifoldd
.Jika Anda menggunakan Vim sebagai alat diff kontrol sumber Anda, maka Anda dapat menggunakan ini untuk menerapkan suntingan hanya pada baris yang diubah saat melihat diff.
Perhatikan bahwa secara default, mode diff Vim menampilkan beberapa baris sebelum dan sesudah setiap bagian yang diubah. Jadi agar tidak mempengaruhi garis yang segera sebelum atau setelah baris berubah Anda harus set pertama
context
dalamdiffopt
untuk0
misalnya:Untuk pengeditan manual, Anda mungkin juga menemukan
foldopen
opsi untuk berguna. Ini mendefinisikan jenis perintah mana yang akan menyebabkan lipatan terbuka. Meskipun perhatikan bahwa itu tidak mencegah pengeditan terjadi di dalam lipatan seperti yang dilakukanfolddoopen
perintah.(Jika Anda memaksudkan hal lain dengan "baris file yang sebenarnya dimodifikasi" maka Anda harus menemukan cara untuk melipat garis yang tidak berubah sebelum Anda menjalankan perintah: cara termudah adalah menyimpan salinan yang tidak berubah. file dan gunakan vimdiff secara manual.)
sumber
:folddoopen
, sepertinya perintah yang sangat berguna. Saya juga ingin menawarkan bahwa jika menggunakan fugitive.vim , Anda dapat lebih mudah melihat perbedaan buffer saat ini dengan:Gdiff
perintah.:vsp new
, lalu:read !git show HEAD~1:path
dan akhirnya:windo diffthis
(dan kemudian menggunakan solusi Anda).