ฉันนำเสนอ 3 วิธี สองกรณีแรกเป็นกรณีพิเศษซึ่งต้องใช้การกดแป้นน้อย คนสุดท้ายคือทั่วไป
|
แทนตำแหน่งเคอร์เซอร์
สลับอาร์กิวเมนต์ที่อยู่ติดกัน (ใช้ไม่ได้สำหรับสองรายการสุดท้าย)
function func(foo[0], |bar(), baz.spam, qux->norf)
ขั้นตอน:
dW
ลบคำปัจจุบัน (อาร์กิวเมนต์)
W
ไปที่อักขระตัวแรกของอาร์กิวเมนต์ถัดไป
P
วางก่อนเคอร์เซอร์
สลับสองอาร์กิวเมนต์สุดท้าย
function func(foo[0], bar()|, baz.spam, qux->norf)
ขั้นตอน:
dt,
ลบจนกว่าเครื่องหมายจุลภาคถัดไป
E
ไปที่ตัวละครสุดท้ายของการโต้แย้งต่อไป
P
วางก่อนเคอร์เซอร์
สลับสองอาร์กิวเมนต์ใด ๆ
function func(|foo[0], bar(), baz.spam, qux->norf)
ขั้นตอน:
vt,d
มองเห็นลบจนกว่าเครื่องหมายจุลภาค
W
หลายครั้งจนกว่าคุณจะถึงอาร์กิวเมนต์ที่คุณต้องการแลกเปลี่ยน
gP
วางก่อนเคอร์เซอร์และวางเคอร์เซอร์บนถ่านหลังจากวางเนื้อหา
dt,
ลบจนกว่าเครื่องหมายจุลภาคถัดไป แทนที่,
ด้วย)
หากนี่คืออาร์กิวเมนต์สุดท้าย
`<
กลับไปที่จุดเริ่มต้นของพื้นที่ภาพล่าสุด (เคอร์เซอร์จะอยู่ที่เครื่องหมายจุลภาค)
P
วางก่อนเคอร์เซอร์
แก้ไข: ตามที่ชี้ไปโดย @ aharris88 OP ต้องการให้อาร์กิวเมนต์สุดท้ายเป็นอาร์กิวเมนต์แรกและย้ายอาร์กิวเมนต์อื่นทั้งหมดให้ถูกต้อง
หมุนอาร์กิวเมนต์ไปทางขวา
function func(foo[0], bar(), baz.spam|, qux->norf)
ขั้นตอน:
dw
ลบ ,␣
dt)
ลบอาร์กิวเมนต์ล่าสุด
%p
ข้ามไปยังการเปิดวงเล็บและวางอาร์กิวเมนต์สุดท้าย
a,␣
ใส่เครื่องหมายจุลภาคและช่องว่าง
<Esc>
กลับสู่โหมดปกติ
หรือถ้าคุณไม่ต้องการออกจากโหมดปกติ:
"rdw
ลบ,␣
ลงทะเบียนr
dt)
ลบอาร์กิวเมนต์ล่าสุด
%p
ข้ามไปยังการเปิดวงเล็บและวางอาร์กิวเมนต์สุดท้าย
"rp
วางเนื้อหาของการลงทะเบียน r
โบนัส: GIF สำหรับแต่ละกรณี:
swap1 , swap2 , swap3และหมุน