คำถามติดแท็ก vimscript

3
VIM: เป็นไปได้หรือไม่ที่จะเพิ่มพฤติกรรมที่กำหนดเองเมื่อใช้ / c ด้วยคำสั่ง replace?
มีบางกรณีที่สะดวกในการค้นหาและแทนที่พฤติกรรมสำหรับบางสิ่ง ตัวอย่างเช่นฉันมีการแมปต่อไปนี้ใน vimrc ของฉัน: nnoremap n nzzzv ซึ่งจัดกึ่งกลางหน้าจอไว้ทุกครั้งที่คุณเลื่อนไปยังนัดต่อไป สิ่งนี้ใช้ได้ดี แต่ใช้ไม่ได้เมื่อทำคำสั่ง% s // c มีวิธีการเชื่อมต่อหรือไม่เมื่อผู้ใช้เลือกหนึ่งในตัวเลือกการยืนยัน y / n / q / q / l / etc เพื่อให้คุณสามารถเรียกใช้คำสั่ง?
2 vim  gvim  vimscript 

1
เป็นกลุ่มสคริปต์: เป็นไปได้ที่จะทำให้การเคลื่อนไหวที่กำหนดเองไม่สามารถทำซ้ำได้?
ฉันพยายามเขียนฟังก์ชัน yank ที่กำหนดเอง แต่ฉันไม่สามารถหาวิธีทำให้ไม่สามารถทำซ้ำได้ (เช่น yank ปกติ) ฉันมีบางอย่างที่คล้ายกับต่อไปนี้: function! s:YankMotion(type) if a:type ==# 'line' normal! `[V`]y elseif a:type ==# 'char' normal! `[v`]y else echom "Unexpected selection type" return endif endfunction nnoremap y :set opfunc=<sid>YankMotion<cr>g@ ปัญหาคือว่าถ้าคุณทำการผ่าตัดที่ทำซ้ำได้ (เช่น. cw) งัดบางสิ่งบางอย่างจากนั้นดำเนินการทำซ้ำอีกครั้งกดปุ่ม.คุณจะคาดหวังที่จะเรียกcwแต่มันพยายามที่จะทำงัดอีกครั้ง เป็นไปได้ไหมที่จะแก้ไขปัญหานี้?
2 vim  vimscript 

1
เป็นกลุ่ม - ฉันสามารถส่ง args หลายรายการไปยังคำสั่งที่กำหนดเองโดยไม่ต้องเขียนฟังก์ชั่น
ฉันได้เขียนคำสั่งที่กำหนดเองต่อไปนี้ในไฟล์. vimrc ของฉัน: command! -nargs=+ Sub :%s/<args>/g มันทำให้ฉันสามารถแทนที่คำหนึ่งไปอีกคำหนึ่งและดำเนินการเช่นนี้: :Sub <word>/<new word> ฉันต้องการเขียนคำสั่งด้วย args หลายอันเช่นนี้ :Sub <word> <new word> ฉันสามารถเขียนคำสั่งใหม่เพื่อยอมรับการขัดแย้งกันหลายครั้งได้หรือไม่? เป็นการดีที่ฉันต้องการสิ่งนี้: command! -nargs=+ Sub :%s/<arg1>/<arg2>/g ขอบคุณล่วงหน้า.

1
ฉันจะเน้นจุดเริ่มต้นของบล็อกเป็นกลุ่มได้อย่างไร
การกำหนดค่า vim ปัจจุบันของฉัน ( YADR ) แสดงวงเล็บเริ่มต้นที่เน้น (เฉพาะ) เมื่อฉันอยู่ที่จุดสิ้นสุดและในทางกลับกัน มีวิธีในการรับฟังก์ชั่นเดียวกันสำหรับการบล็อกจุดเริ่มต้นและจุดสิ้นสุดหรือไม่เช่นเมื่อฉันอยู่ที่ if ไฮไลต์ที่อื่นและสิ้นสุดถ้าฉันใช้ฟังก์ชั่นจะเน้นจุดสิ้นสุด (เช่นทับทิม) ข้อมูลสำหรับจุดเริ่มต้นและจุดสิ้นสุดของบล็อกควรมีอยู่แล้วสำหรับการเน้นไวยากรณ์หรือการพับไม่ควรใช่หรือไม่ มีวิธีการเปิดใช้งานนี้โดยทั่วไปสำหรับทุกภาษาที่ "สนับสนุน" (ฉันไม่ทราบว่าจะมีคุณสมบัติเช่นนี้ ctags? syntax เน้นโครงร่าง? ขออภัยฉันยังไม่คุ้นเคยกับ internals ของ vim เลย)

3
เป็นกลุ่ม: คุณเน้นรูปแบบการค้นหาจากสคริปต์ได้อย่างไร
ฉันจะไม่คิดว่ามันจะยากที่จะทำ แต่มันไม่ทำงาน สิ่งที่ฉันพยายามทำคือเปิดใช้งานไฮไลต์การค้นหาจากสคริปต์ ฉันได้ลองทำสิ่งต่อไปนี้แล้ว: function! g:TestFunc() let @/ ="testtext" set hlsearch endfunction nnoremap <space> :call g:TestFunc()<cr> ซึ่งไม่ได้ผล นั่นคือการกดปุ่มพื้นที่ด้านหน้าของข้อความด้วย "testtext" ในนั้นจะไม่เน้นข้อความ ผู้ใช้ยังคงต้องกดปุ่ม 'n' ฉันลองเพิ่มexec 'normal! n'ในตอนท้ายของฟังก์ชั่น แต่ก็ไม่ได้ผล แม้feedkeys('n')ล้มเหลว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.