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:
"rdwhapus ,␣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