Tôi trình bày 3 phương pháp. Hai trường hợp đầu tiên là những trường hợp cụ thể, đòi hỏi ít tổ hợp phím hơn. Cái cuối cùng là chung chung.
|
đại diện cho vị trí con trỏ.
Hoán đổi các đối số liền kề (không hoạt động cho hai lần cuối)
function func(foo[0], |bar(), baz.spam, qux->norf)
Các bước:
dW
xóa từ hiện tại (đối số)
W
đi đến char đầu tiên của đối số tiếp theo
P
dán trước con trỏ
Hoán đổi hai đối số cuối cùng
function func(foo[0], bar()|, baz.spam, qux->norf)
Các bước:
dt,
xóa cho đến dấu phẩy tiếp theo
E
đi đến nhân vật cuối cùng của cuộc tranh luận tiếp theo
P
dán trước con trỏ
Hoán đổi bất kỳ hai đối số
function func(|foo[0], bar(), baz.spam, qux->norf)
Các bước:
vt,d
xóa trực quan cho đến khi dấu phẩy
W
nhiều lần cho đến khi bạn đạt được đối số bạn muốn trao đổi với
gP
dán trước con trỏ và đặt con trỏ lên char sau khi dán nội dung
dt,
xóa cho đến dấu phẩy tiếp theo. thay thế ,
bằng )
nếu đây là đối số cuối cùng
`<
quay trở lại việc năn nỉ khu vực hình ảnh cuối cùng (con trỏ sẽ được đặt ở dấu phẩy)
P
dán trước con trỏ
Chỉnh sửa: như được chỉ ra bởi @ aharris88, OP muốn đối số cuối cùng là đối số đầu tiên và di chuyển tất cả các đối số khác sang phải.
Xoay đối số sang phải
function func(foo[0], bar(), baz.spam|, qux->norf)
Các bước:
dw
xóa bỏ ,␣
dt)
xóa đối số cuối cùng
%p
nhảy đến mở ngoặc và dán đối số cuối
a,␣
chèn dấu phẩy và dấu cách
<Esc>
trở về chế độ bình thường
Hoặc, nếu bạn không muốn rời khỏi chế độ bình thường:
"rdw
xóa ,␣
vào sổ đăng kýr
dt)
xóa đối số cuối cùng
%p
nhảy đến mở ngoặc và dán đối số cuối
"rp
dán nội dung đăng ký r
Bonus: a GIF cho từng trường hợp:
swap1 , swap2 , swap3 và xoay