แม้จะมีความจริงที่ว่าคำถามที่ค่อนข้างเก่าและทำเครื่องหมายเป็นคำตอบที่ฉันต้องการที่จะขยายคำตอบโดยบอกว่าคุณสามารถใช้คำสั่งโหมดปกติซึ่งมีให้โดยสเวน Marnachด้วยnnoremap
เช่นดังนั้น:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
ซึ่งจะช่วยให้คุณสามารถย้ายบรรทัดด้วยCtrl+ UpและCtrl+ Downภายในไฟล์ของคุณ อย่างไรก็ตามสิ่งนี้จะเขียนทับ@"
register ซึ่งเก็บสตริง / word / letter / etc ที่คัดลอกล่าสุดของคุณ ดังนั้นโดยการเพิ่ม "(reg) ก่อนdd
และp
คำสั่งเราสามารถแก้ไขสิ่งนี้ได้:
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
ที่นี่เราเพิ่ม"a
ก่อนลบและวางคำสั่งเพื่อจัดเก็บบรรทัดของเราใน@a
register ดังนั้น copy register เริ่มต้นของคุณจะไม่ถูกเขียนทับ อย่างไรก็ตามมันอาจเขียนทับเนื้อหาของ@a
register (ใครจะรู้ แต่คุณอาจใช้เพื่อบางอย่างที่สำคัญในกรณีการใช้งานของคุณ แต่ขั้นตอนนี้ค่อนข้างหวาดระแวงคุณสามารถข้ามไปได้หากต้องการ) มาแก้ไขด้วย:
:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>
( <silent>
จำเป็นเพื่อป้องกันไม่ให้สะท้อนคำสั่งของเราไปยังบรรทัดข้อความที่ด้านล่าง)
ตอนนี้เรามีการแมปสองแบบซึ่งช่วยให้เราสามารถย้ายบรรทัดภายในไฟล์ด้วยแป้นพิมพ์ลัด คุณสามารถกำหนดปุ่มใหม่ได้ฉันใช้Alt+ j/ kซึ่งจะเป็น<A-j>
และ<A-k>
สำหรับคำสั่งเหล่านั้น อย่างไรก็ตามตัวเลียนแบบเทอร์มินัลบางตัวไม่รองรับการแมปคีย์ Alt AFAIK
git config --global core.editor <whatever>
เท่านั้นหรือหลาย ๆ อย่างพร้อมกัน (รวมถึงคอมไพล์) โดยรวมexport EDITOR=<whatever>
ไว้ใน.bashrc
ไฟล์.