Vim HardMode Fine Grain เคลื่อนไหว


11

ฉันเพิ่งค้นพบเกี่ยวกับโหมดยากเป็นกลุ่มและฉันตัดสินใจลองใช้ อย่างไรก็ตามฉันพบปัญหาบางอย่างกับการเคลื่อนไหวของเม็ดละเอียด

ตัวอย่างเช่นสมมติว่าฉันต้องการเลื่อนขึ้นหรือลงหนึ่งบรรทัดจริงๆ ตั้งแต่jและkถูกปิดใช้งานฉันไม่แน่ใจว่ามีทางเลือกอะไรที่ดีกว่าสำหรับสิ่งนี้

ฉันพบปัญหาเดียวกันเมื่อฉันต้องการย้ายอักขระหนึ่งหรือสองตัวไปทางซ้ายหรือขวา ไม่มีใครรู้ว่าจะใช้วิธีใดในการทดแทนการเคลื่อนไหวประเภทนี้?

นี้เป็นปลั๊กอินฉันใช้: https://github.com/wikitopian/hardmode


ปลั๊กอินอะไรโง่! ใช้งานอะไรก็ได้
romainl

ฉันเห็นด้วยกับ romainl: เป็นเรื่องดีที่ได้เรียนรู้วิธีการนำทางอย่างมีประสิทธิภาพในไฟล์ ยังคุณอาจสนใจคำตอบของฉันที่นี่ (แม่นยำยิ่งขึ้นส่วนเกี่ยวกับ/และ?.
statox

1
ฉันจะไม่เห็นด้วยกับ statox และโรแมนติกที่นี่อย่างเคารพ การนำทางโดยตรงไปยังเป้าหมายที่คุณต้องการเปลี่ยนแปลงสามารถปรับปรุงประสิทธิภาพโดยรวมของคุณได้อย่างมาก ในขณะที่ใช่สิ่งนี้อาจทำให้คุณช้าลงในตอนแรกในระยะยาวคุณจะใช้เวลาที่หายไปโดยใช้การนำทางที่ดีขึ้น
Archangel33

ที่จริง @ Archangel33 ฉันคิดว่าเรามีความคิดเห็นแบบเดียวกันเกี่ยวกับความจริงที่ว่าการนำทางอย่างแม่นยำมากขึ้นด้วยวิธีอื่นนอกเหนือจากhjklเป็นสิ่งที่ดี สิ่งที่ฉันไม่เห็นด้วยคือปลั๊กอินตัวเอง: ในความคิดของฉันมันจะดีกว่าที่จะเรียนรู้วิธีใหม่ในการนำทางครั้งเดียว (คุณไม่สามารถเรียนรู้ทั้งหมดในเวลาเดียวกัน) และในระหว่างการเรียนรู้โดยใช้ปลั๊กอินที่ทำให้คุณไม่รอด จำเป็น ที่ถูกกล่าวว่ามันเป็นเพียงความเห็นของฉัน: หนึ่งมีสิทธิ์ที่จะไม่เห็นด้วย :-)
statox

1
@ Alex That being said it is only my opinion: one has right to disagreeแท้จริงความคิดเห็นของฉันเป็นเพียงความเห็นส่วนตัวของฉันฉันจะไม่พิจารณาว่าฉันมีเพียงการแก้ปัญหาและสากลที่ว่าทำไมประโยคสุดท้ายของฉันคือ ตอนนี้การถกเถียงอาจเกิดขึ้นไม่สิ้นสุดแน่นอนว่าบางคนจะได้รับประโยชน์จากปลั๊กอินชนิดนี้ในขณะที่มันจะทำให้คนอื่นผิดหวังและเป็นอันตรายต่อการเรียนรู้ หากคุณต้องการพูดคุยเกี่ยวกับเรื่องนี้ฉันยินดีที่จะพูดคุยกับคุณในการแชท แต่เราไม่ควรสแปมความคิดเห็นของคำถามด้วยการอภิปรายแบบนี้ :-)
statox

คำตอบ:


17

นี่เป็นเพียงการเคลื่อนไหวบางส่วนที่กลุ่มมีความสามารถคุณควรจะไปตอนนี้

TL; DR

  1. ใช้คุณสมบัติช่วยใน Vim ของnavigationหรือยังดีกว่าusr_03.txt
  2. ค้นหา google สำหรับ vim advanced movements
  3. นำทางด้วย / ถึงคำ
  4. ไปที่นี่ทุกการเคลื่อนไหวที่ถูกต้อง

การเคลื่อนไหว

มีหลายวิธีในการรับเป็นกลุ่มฉันได้แสดงรายการบางอย่างที่ฉันพบโดยการค้นหาvim advanced movementsและไม่กี่ที่ฉันใช้ตลอดเวลา ฉันแน่ใจว่าคุณรู้จักสิ่งเหล่านี้ส่วนใหญ่ แต่สิ่งที่ฉันคิดว่าคุณจะต้องให้ความสนใจเป็นพิเศษก็คือการนำทางของคำ

นี่คือบางส่วนที่อนุญาตสำหรับการนำทางภายในบรรทัด

  • 0 - ไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน
  • ^ - ไปที่อักขระที่ไม่ใช่ช่องว่างบรรทัดแรก
  • $ - ไปที่ท้ายบรรทัดปัจจุบัน
  • g_ - ไปที่อักขระที่ไม่ใช่ช่องว่างสุดท้ายของบรรทัด

การนำทางด้วยคำพูดมีประโยชน์มาก เพื่อให้ละเอียดยิ่งขึ้นคุณควรไปที่ความสัมพันธ์กับคำต่างๆโดยใช้:

  • e - ไปที่ท้ายคำปัจจุบัน
  • E - ไปที่ส่วนท้ายของคำปัจจุบัน
  • b - ไปที่คำก่อนหน้า (ก่อนหน้า)
  • B - ไปที่คำก่อนหน้า (ก่อน)
  • w - ไปที่คำถัดไป
  • W - ไปที่คำต่อไป

คำประกอบด้วยลำดับตัวอักษรตัวเลขและขีดล่าง WORD ประกอบด้วยลำดับของอักขระที่ไม่ว่างคั่นด้วยช่องว่าง คำ | WORDS อาจเปลี่ยนไปตามการตั้งค่า vim ของคุณ

ตัวอย่างเพื่อแสดงความแตกต่างระหว่างคำและคำ

192.168.1.1 เป็นคำเดียว

192.168.1.1 คือเจ็ดคำ

การเคลื่อนไหวของการค้นหาอาจมีประโยชน์อย่างยิ่งเช่นกัน

  • /pattern - ค้นหารูปแบบที่คุณจะนำคุณไปสู่การเกิดขึ้นต่อไปของ pattern
    • nจะนำคุณไปสู่การแข่งขันของpatternเคอร์เซอร์ด้านล่าง
  • ?pattern- patternค้นหารูปแบบที่คุณจะพาคุณไปยังที่เกิดขึ้นก่อนหน้านี้ของ
    • Nจะนำคุณไปสู่การแข่งขันถัดไปของpatternเคอร์เซอร์ด้านบน
  • * - ไปที่การเกิดขึ้นครั้งถัดไปของคำปัจจุบันภายใต้เคอร์เซอร์
  • # - ไปที่การเกิดขึ้นก่อนหน้าของคำปัจจุบันภายใต้เคอร์เซอร์
  • % - ไปที่วงเล็บปีกกาที่ตรงกันหรือวงเล็บในโค้ด

นี่คือบางอย่างที่คุณสามารถทำได้ก่อนเปิด vim จากบรรทัดคำสั่ง Vim +N filenameให้คุณไปที่บรรทัด Nth ของไฟล์หลังจากเปิด

vim +10 /etc/passwd

Vim +/pattern filenamepatternเปิดแฟ้มไปยังบรรทัดแรกที่มีการเกิดขึ้นของ ในตัวอย่างต่อไปนี้เป็นกลุ่มจะเปิดไฟล์ README และข้ามไปยังคำที่เกิดขึ้นครั้งแรกของคำว่า "ติดตั้ง"

vim +/install README

Vim +?patten filenamepatternเปิดแฟ้มที่จะเกิดขึ้นครั้งล่าสุดของ ในตัวอย่างต่อไปนี้มันจะเปิดไฟล์ README และข้ามไปยังคำที่เกิดขึ้นครั้งสุดท้ายของคำว่า "บั๊ก"

vim +?bug README


8

เป็นทางเลือกให้ hardmode ให้ข้อมูลต่อไปนี้จะช่วยให้คุณใช้h, j, kและlตามปกติ แต่ผลิตเสียงเตือนเสียงจะเตือนคุณเมื่อมีการใช้ในเวลาอันรวดเร็ว

function! s:BeepOnRepeat(key)
    let count1 = v:count1

    if !exists('s:last_time')
        let s:last_time    = reltime()
        let s:repeat_count = 1
    else
        " increment the repeat count if `h`, `j`, `k`, or `l` was pressed
        " within the last second, otherwise reset it
        let now = reltime()
        if str2float(reltimestr(reltime(s:last_time, now))) < 1
            let s:repeat_count += 1
        else
            let s:repeat_count = 1
        endif
        let s:last_time = now

        " produce an audible beep if a sequence of `h`, `j`, `k`, and/or `l`,
        " greater than three, was pressed (within the repeat count time limit)
        if s:repeat_count > 3
            let savebelloff    = &belloff
            let savevisualbell = &visualbell
            let &belloff    = ''
            let &visualbell = 0
            execute "normal! \<Esc>"
            let &belloff    = savebelloff
            let &visualbell = savevisualbell
        endif
    endif

    execute 'normal! ' . count1 . a:key
endfunction

nnoremap <silent> h :<C-u>call <SID>BeepOnRepeat('h')<CR>
nnoremap <silent> j :<C-u>call <SID>BeepOnRepeat('j')<CR>
nnoremap <silent> k :<C-u>call <SID>BeepOnRepeat('k')<CR>
nnoremap <silent> l :<C-u>call <SID>BeepOnRepeat('l')<CR>

สำหรับวิธีการอื่นที่จะ จำกัดhjklการใช้งานดูเป็นกลุ่ม-กากน้ำตาล


3

อีกทางเลือกหนึ่งใช้โหมดกลางซึ่งยังคงพยายามเรียนรู้คุณ "การเคลื่อนไหวที่ถูกต้อง" แต่ไม่เข้มงวดในการทำเช่นนั้น:

โหมด Medium เป็นปลั๊กอิน Vim ที่ จำกัด การเคลื่อนไหวของตัวละคร แต่ไม่ได้ปิดใช้งานอย่างสมบูรณ์ โดยค่าเริ่มต้นโหมดปานกลางจะอนุญาตให้ใช้การเคลื่อนไหวที่ฉลาดต่อเนื่องสองตัว


1

ฉันมีปัญหาเดียวกันนี้จากนั้นฉันพิมพ์:help hardmodeทองหล่อและเห็นฉันพบ

'g:HardMode_level' If set to 'wannabe' 
arrow keys disabled, but not   hjkl etc.                                                                                              

โดยวิธีฉันเป็นหนึ่งในผู้เริ่มต้นกลุ่มที่พบว่าปลั๊กอินนี้มีประโยชน์อย่างยิ่งเพราะมันผลักฉันออกไปจากเมาส์จริงๆ

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