Saya menyajikan 3 metode. Dua yang pertama adalah kasus-kasus tertentu, yang membutuhkan sedikit penekanan tombol. Yang terakhir adalah generik.
|
mewakili posisi kursor.
Tukar argumen yang berdekatan (tidak berfungsi untuk dua yang terakhir)
function func(foo[0], |bar(), baz.spam, qux->norf)
Langkah:
dW
hapus Word saat ini (argumen)
W
pergi ke karakter pertama dari argumen berikutnya
P
rekatkan di depan kursor
Tukar dua argumen terakhir
function func(foo[0], bar()|, baz.spam, qux->norf)
Langkah:
dt,
hapus sampai koma berikutnya
E
pergi ke karakter terakhir dari argumen berikutnya
P
rekatkan di depan kursor
Tukar dua argumen
function func(|foo[0], bar(), baz.spam, qux->norf)
Langkah:
vt,d
hapus secara visual sampai koma
W
beberapa kali hingga Anda mencapai argumen yang ingin Anda tukarkan
gP
rekatkan sebelum kursor dan tempatkan kursor pada char setelah konten yang disisipkan
dt,
hapus sampai koma berikutnya. ganti ,
dengan )
jika ini argumen terakhir
`<
kembali ke permulaan area visual terakhir (kursor akan ditempatkan di koma)
P
rekatkan di depan kursor
Sunting: seperti yang ditunjukkan oleh @ aharris88 OP ingin argumen terakhir menjadi yang pertama dan memindahkan yang lainnya dengan benar.
Putar argumen ke kanan
function func(foo[0], bar(), baz.spam|, qux->norf)
Langkah:
dw
menghapus ,␣
dt)
hapus argumen terakhir
%p
lompat ke membuka tanda kurung dan tempel argumen terakhir
a,␣
masukkan koma dan spasi
<Esc>
kembali ke mode normal
Atau, jika Anda tidak ingin meninggalkan mode normal:
"rdw
hapus ,␣
ke dalam registerr
dt)
hapus argumen terakhir
%p
lompat ke membuka tanda kurung dan tempel argumen terakhir
"rp
rekatkan konten register r
Bonus: GIF untuk setiap kasus:
swap1 , swap2 , swap3 dan rotate