ฉันจะจัดการกับบรรทัดที่ยาวมากในข้อความ (500+ ตัวอักษร) ได้อย่างไร


19

สำหรับบางรูปแบบข้อความการแบ่งบรรทัดจะสำคัญ

ตัวอย่างเช่นฉันมักใช้ Vim ในการเขียนเอกสาร MediaWiki ซึ่งคุณไม่สามารถวาง linebreak ที่ไหนก็ได้ (ไม่เหมือนกับ Markdown) ดังนั้นฉันจึงถูกบังคับให้เขียนบทที่มีตัวละครมากมาย

สิ่งนี้สามารถนำไปสู่ความยาว (200+ ตัวอักษร) หรือแม้กระทั่งความยาวมาก (1,000+ ตัวอักษร) ฉันพบว่ามันน่าอึดอัดใจมากที่จะใช้ในกลุ่ม ตัวอย่างหนึ่งคือถ้าฉันต้องการแก้ไขบางอย่างที่อยู่กลางบรรทัดอักขระ 1,000 ตัวฉันต้องเลื่อนเคอร์เซอร์ของฉัน 500 ครั้ง

สิ่งนี้สามารถทำให้เร็วขึ้นด้วยwหรือ/แต่ก็ยังคงอึดอัดใจ

มีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้หรือไม่? ปุ่มเคลื่อนไหวที่ดีขึ้น? บางส่วนของ "การตัดคำแบบปลอม" (ข้อความมีลักษณะเหมือนtw=80แต่ไม่มี\nในไฟล์) หรืออย่างอื่น


1
คุณอาจต้องการตั้งค่า display = lastlineเพื่อหลีกเลี่ยงบรรทัดว่าง @ ที่ท้ายหน้าจอ
Random832

คำตอบ:


21

คุณสามารถใช้gชุดคำสั่งเพื่อย้ายไปยังขอบเขตของพื้นที่หน้าจอที่มองเห็นได้ ตัวอย่างเช่นg$ย้ายไปที่ขอบด้านขวาของหน้าจอ (ซึ่งไม่จำเป็นต้องเป็นจุดสิ้นสุดของบรรทัด) gjเลื่อนเคอร์เซอร์ลงหนึ่งบรรทัดตามที่ปรากฏบนหน้าจอ (ซึ่งไม่จำเป็นต้องมีหนึ่งบรรทัดตรรกะ)

บางทีคุณอาจผูกปุ่มลูกศรอีกครั้ง:

nnoremap <Up> gk
nnoremap <Down> gj

หรือบางคนก็ปฏิเสธโดยตรงkและj:

nnoremap k gk
nnoremap j gj

สำหรับโหมดแทรกคุณสามารถใช้:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

หรือ:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

นอกจากนี้หากคุณใช้:set wrapVim จะตัดบรรทัดเพื่อให้คุณเห็นบรรทัดทั้งหมด คุณยังสามารถใช้set showsbreak=+เพื่อแสดง a +เพื่อระบุว่า Vim กำลังทำการตัดคำ


หากต้องการข้ามไปยังตำแหน่งคอลัมน์ที่ต้องการคุณสามารถใช้|คำสั่ง ตัวอย่างเช่น200|จะไปที่ตำแหน่งคอลัมน์ 200


1
... และg5jเพื่อกระโดด 5 ลงตามปกติ
yo '

1
@yo 'ฉันคิดว่าคุณหมายถึง5gj
Martin Tournoij

1
@Carpetsmoker แปลก ๆ ; ด้วยคำสั่งส่วนใหญ่มันไม่สำคัญว่าคุณจะให้ส่วนนำหน้าและหมายเลขใดตราบใดที่คำสั่งนั้นยังคงอยู่ ที่นี่มันไม่ได้: - /
yo '

@yo' ดีในg5j, g5เป็นครั้งแรกที่เพิ่งกระโดดไปข้างหน้าก่อนที่คุณจะใช้5 jนั่นเป็นเหตุผลว่าทำไมมันไม่สามารถทำอะไร5gjได้
Shahbaz

3

Vim มีการรองรับการหุ้มแบบอ่อนset wrapเพื่อเปิดใช้งานและมันจะตัดบรรทัดที่ยาวเกินกว่าหน้าจอที่มองเห็นได้ คุณสามารถใช้gj& gkเพื่อเลื่อนขึ้น / ลงตามลำดับบนบรรทัดที่พันกัน


2

เมื่อฉันจัดการกับเส้นที่ยาวมากจุดปวดที่ใหญ่ที่สุดนั้นเกี่ยวข้องกับความยาวของเส้นที่ต่างกัน นั่นคือการเลื่อนขึ้นหรือลงใกล้จุดสิ้นสุดของบรรทัดเลื่อนหน้าต่างไปทางซ้ายหรือขวา

สิ่งนี้สามารถหลีกเลี่ยงได้โดยการตั้งค่าvirtualedit=allซึ่งช่วยให้คุณเลื่อนเคอร์เซอร์ไปยังพื้นที่ว่างหลังจากสิ้นสุดบรรทัด


1

อย่างที่คนอื่นพูดคุณสามารถใช้g+ บางอย่างเพื่อเลื่อนไปรอบ ๆ อย่างไรก็ตามเมื่อคุณมีเส้นที่ยาวมาก ๆ การกดgjหลาย ๆ ครั้งเพื่อเลื่อนลงไม่ใช่การยศาสตร์ ฉันมีสิ่งต่อไปนี้ใน.vimrcการทำให้ง่ายขึ้นมาก:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

สำหรับ Mac นี่ทำให้ฉันสามารถใช้ j, k, $, 0 และ ^ บนบรรทัดการแสดงผลโดยกดปุ่มคำสั่งค้างไว้ ในระบบอื่น ๆ แทนที่จะDลองMหรือAใช้ Alt หรือCควบคุม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.