คำสั่ง (หรือทางลัด) เพื่อย้ายบรรทัดขึ้นหรือลงในกลุ่มคืออะไร? เวิร์กโฟลว์ปัจจุบันของฉันคือการดึง (คัดลอก) บรรทัดและกว่าลบบรรทัดนั้นและแทนที่จะวาง (วาง) บรรทัดนั้น
คำสั่ง (หรือทางลัด) เพื่อย้ายบรรทัดขึ้นหรือลงในกลุ่มคืออะไร? เวิร์กโฟลว์ปัจจุบันของฉันคือการดึง (คัดลอก) บรรทัดและกว่าลบบรรทัดนั้นและแทนที่จะวาง (วาง) บรรทัดนั้น
คำตอบ:
ขั้นแรกคุณไม่จำเป็นต้องดึงและลบ; หลังจะใส่เนื้อหาที่ถูกลบในการลงทะเบียน (เริ่มต้นหรือที่ระบุ) ดังนั้นddp
/ ddkP
เป็นคำสั่งทั่วไปในการย้ายหนึ่งบรรทัดขึ้น / ลง
หรือคุณสามารถใช้:move
คำสั่งเช่น:move +1
/ :move -2
; สิ่งนี้จะไม่ขัดขวางการลงทะเบียนและคุณสามารถย้ายช่วงทั้งหมดได้ คุณสามารถกำหนดการแมปกุญแจได้อย่างง่ายดายเพื่อย่อให้สั้นลง
หากคุณไม่คำนึงถึงปลั๊กอิน (และความสะดวกสบายเพิ่มเติมที่มักจะมาพร้อมกับพวกเขา) ทั้งปลั๊กอินที่ไม่มีการควบคุมของTim Pope และปลั๊กอิน LineJugglerของฉันจะให้]e
/ [e
การแมปเพื่อย้ายเส้น (และอื่น ๆ อีกมากมาย; บรรทัด (s))
วิธีที่ง่ายที่สุดคือ: :m+
หรือ:m-2
คำย่อใด:move
ตามที่แนะนำโดย Ingo
หรือใช้โหมดภาพ ( V) โดยการตัดบรรทัด ( d/ x) แล้ววาง ( p- เคอร์เซอร์ด้านล่างเคอร์เซอร์Pด้านบน) หลังจากที่คุณเลื่อนเคอร์เซอร์ไปยังตำแหน่งที่ถูกต้องก่อนที่จะวาง (ดังนั้นโดยสรุปคือVxp/ Vdp)
เมื่อย้ายหลายบรรทัดในโหมดภาพคุณต้องใช้:m '>+1
(เพื่อเลื่อนหนึ่งบรรทัดลง) หรือ:m '<-2
(เพื่อเลื่อนหนึ่งบรรทัดขึ้นไป)
นี่คือตัวอย่างการแม็พที่มีประโยชน์ ( Shift+ ↑/ Shift+↓):
nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>
ซึ่งคล้ายกับ Sublime Text ( Win / OSX )
นี่คือบางส่วนที่แนะนำที่vim wikia :
nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv
ในโหมดปกติหรือในโหมดแทรกให้กด Alt-j เพื่อย้ายบรรทัดปัจจุบันลงหรือกด Alt-k เพื่อเลื่อนบรรทัดปัจจุบันขึ้น
หลังจากเลือกบล็อกของเส้นสายตา (ตัวอย่างเช่นโดยการกด V จากนั้นเลื่อนเคอร์เซอร์ลง), กด Alt-j เพื่อเลื่อนทั้งบล็อกลงหรือกด Alt-k เพื่อเลื่อนบล็อกขึ้น
ดูสิ่งนี้ด้วย:
หากฉันต้องการสลับหนึ่งบรรทัดด้วยบรรทัดด้านบนฉันมักจะทำสิ่งต่อไปนี้
ddkP
คำอธิบาย
ddp
FWIW นี่คือสิ่งที่ฉันใช้มานานหลายปี มันเลื่อนบรรทัดปัจจุบันขึ้นและลงในโหมดปกติหรือการเลือกในโหมดภาพในขณะที่ปรับการเยื้องโดยอัตโนมัติ
nnoremap ,<Up> :<C-u>silent! move-2<CR>==
nnoremap ,<Down> :<C-u>silent! move+<CR>==
xnoremap ,<Up> :<C-u>silent! '<,'>move-2<CR>gv=gv
xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv
ddkP
เลื่อนลงทำได้ง่ายขึ้น:ddp
.