Vi & Vim

คำถามและคำตอบสำหรับผู้ที่ใช้ตระกูล vi และ Vim ของเครื่องมือแก้ไขข้อความ

1
จะขีดเส้นใต้หัวเรื่องได้อย่างไร (reStructuredText, Markdown, สไตล์ asciidoc)
ภาษามาร์กอัปข้อความธรรมดาหลายภาษา: reStructuredText, Markdown, asciidoc (อื่น ๆ ด้วย)ใช้ขีดเส้นใต้เพื่อแสดงชื่อเรื่อง Chapter 1 Title =============== Section 1.1 Title ----------------- Subsection 1.1.1 Title ~~~~~~~~~~~~~~~~~~~~~~ Section 1.2 Title ----------------- Chapter 2 Title =============== มีวิธีที่สะดวกเพิ่มเหล่านี้ในกลุ่ม? เพิ่มอักขระที่มีความยาวตรงกับบรรทัดด้านบน
13 markup 

7
เป็นกลุ่มสามารถปิด Capslock โดยอัตโนมัติเมื่อกลับสู่โหมดปกติหรือไม่?
หลังจากเกือบทุกครั้งที่ฉันพิมพ์บางอย่างในตัวพิมพ์ใหญ่ฉันลืมปิด capslock เมื่อกลับสู่โหมดปกติ จากนั้นฉันพยายามเลื่อนเคอร์เซอร์และจบการเข้าร่วมกับกลุ่มของบรรทัดและสิ่งอื่น ๆ อีกมากมายที่ฉันไม่คิดว่าจะเกิดขึ้น เป็นไปได้ไหมที่จะกำหนดค่า vim ให้ปิด capslock เมื่อฉันกด escape เพื่อเข้าสู่โหมดปกติ? หากมีวิธีแก้ไขเฉพาะระบบปฏิบัติการฉันสนใจที่จะใช้กับ Linux


3
เป็นกลุ่มไม่แสดงคำสั่งที่ถูกพิมพ์
ฉันอ่านvimtutorและในบทที่ 2.1 มีหมายเหตุเกี่ยวกับการพิมพ์คำสั่งเช่นdw : NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press <ESC> and start over. แต่ฉันไม่เห็นคำสั่งที่ฉันพิมพ์ในบรรทัดคำสั่งทั้งใน vim หรือ gvim …


3
วิธีเปิดใช้งาน / ปิดใช้งาน augroup ได้ทันที
ฉันสร้างขึ้นaugroupใน.vimrcหลายที่มีของฉันautocmdและฉันต้องเปิด / ปิดการใช้งานได้autocommandทันที ความคิดที่จะสร้างการแมป (สมมติว่าF4ตัวอย่าง) ซึ่งจะช่วยให้ autocommands .vimrcเหล่านี้เมื่อกดครั้งเดียวและปิดการใช้งานพวกเขาเมื่อกดอีกครั้งโดยไม่ต้องไปยังแหล่งไฟล์หรือโหลด ฉันจะทำสิ่งนั้นได้อย่างไร

1
ปรับปรุงความเร็วการเล่นซ้ำของมาโครหรือไม่
ฉันบันทึกมาโครแบบง่ายและเล่นซ้ำในบรรทัดต่อไปนี้ แต่ดูเหมือนว่าความเร็วการเล่นซ้ำช้ามาก (จัดการน้อยบรรทัดต่อวินาที) นี่เป็นสิ่งที่คาดหวังและมีวิธีในการปรับปรุงความเร็วดังกล่าวหรือไม่?
13 macro 

1
มี incsearch สำหรับคำสั่ง replace หรือไม่?
ฉันชอบincsearchฟังก์ชั่นของ Vim จริงๆ มีวิธีที่จะมีมันหรือสิ่งที่คล้ายกับมันทำงานในขณะที่ฉันทำแทน? ตัวอย่างเช่นหากอยู่ในโหมดปกติฉันพิมพ์: :%s/potato/ ฉันจะได้รับการpotatoเน้นทั้งหมดในไฟล์ของฉันเหมือนที่พวกเขาเน้นโดยincsearchเมื่อฉันเขียน /potato ? สิ่งนี้จะช่วยฉันได้มากเมื่อใช้นิพจน์ทั่วไป สิ่งที่ดีมากที่เป็นไปได้คือเมื่อฉันเขียนสิ่งนี้: :%s/potato/banana/ มันจะแทนที่potatos ด้วยbananas และเน้นพวกมัน - บางทีการเปลี่ยนควรจะเป็นสีอื่น ไม่ควร "ยอมรับ" การเปลี่ยนแปลงจนกว่าฉันจะกด Enter) ตอนนี้ฉันใช้ neovim ในกรณีที่ช่วยได้

1
วิธีค้นหา / grep ด้วย VIM แบบโต้ตอบ?
มีวิธีใดที่จะกำหนดค่า VIM ให้ค้นหาภายในไฟล์ทุกไฟล์สำหรับโครงการทั้งหมดแบบโต้ตอบหรือไม่? โดยการโต้ตอบฉันหมายถึงการปรับปรุงการกดแป้นแต่ละครั้ง บางอย่างเช่น Emacs ปรึกษา-Git-grepโปรดดูที่: ตัวอย่างเช่นการสาธิต
12 search  vimgrep 

1
ไม่สนใจเครื่องหมายกำกับ / เสียงเมื่อค้นหา
มีวิธีในการสั่งให้ Vim ที่ฉันต้องการละเว้นการออกเสียง / การเน้นเสียงเมื่อค้นหาหรือไม่? ตัวอย่างเช่นฉันต้องการค้นหา kočička โดยการเข้าสู่ /kocicka ignorecaseและsmartcaseตัวเลือกที่มีประโยชน์มาก แต่พวกเขาไม่ได้ดูเหมือนจะมีอะไรที่จะทำอย่างไรกับการกำกับ / สำเนียง
12 search 

4
คำสั่งเพื่อวนซ้ำคำแนะนำการสะกดคำ
ฉันแมปzzไป1z=ซึ่งเป็นที่ดีที่สุดของเวลา แต่ทุกขณะนี้แล้วข้อเสนอแนะครั้งแรกไม่ได้เป็นหนึ่งที่เหมาะสม ดังนั้นฉันต้องการที่จะทำซ้ำzz(หรือ.) ซ้ำเพื่อหลีกเลี่ยงข้อเสนอแนะอื่น ๆ วินาทีzzในคำเดียวกันจากนั้นก็จะได้ผลเหมือนu2z=กันข้อที่สามzzก็ใช้ได้เหมือนu3z=กัน ความคิดใด ๆ เกี่ยวกับวิธีการทำเช่นนั้น? แก้ไข: จากคำตอบที่ยอดเยี่ยมของ @ nobe4 ฉันสามารถทำสิ่งที่ฉันต้องการได้ แต่ฉันจะทิ้งไว้ที่นี่ซักพักในกรณีที่มีใครมีการปรับปรุงหรือคำแนะนำ: let s:spell_position = [] let s:spell_count = 0 let s:spell_word = "" function! LoopSpell() if s:spell_position != getpos('.') || \ (s:spell_count > 0 && s:spell_word !~ expand("<cword>")) let s:spell_count = 0 let s:spell_position = getpos('.') …

2
จะบันทึกและกู้คืนการแมปได้อย่างไร?
ฉันกำลังพัฒนาปลั๊กอินสำหรับ Vim และฉันต้องการกำหนดการแมปซึ่งจะใช้ได้เฉพาะในขณะที่ "การเรียกใช้ปลั๊กอิน" จนถึงตอนนี้เวิร์กโฟลว์ของปลั๊กอินจะมีดังต่อไปนี้: ผู้ใช้เรียกคำสั่งของปลั๊กอิน คำสั่งเรียกใช้ฟังก์ชันการรักษาล่วงหน้า: function! s:PreTreatmentFunction(function, ...) " Do some pretreatment stuff " Create a mapping to call the TearDown nnoremap <C-c> :call TeardDown()<CR> " Call a function depending on the parameter passed to this one if function == "foo" call Foo() else call Bar() endif endfunction …

1
การพูดคุยเป็นกลุ่มจากภายนอก
ฉันสามารถเปลี่ยนตัวแปรในอินสแตนซ์ของ vim จากเชลล์อื่น (โดยไม่ต้องส่งคีย์ผ่าน tmux) ได้หรือไม่? ฉันถามเพราะฉันต้องการใช้ตัวเลือกการคอมไพล์ _cmd, success_cmd และ failure_cmd ของ Latexmk เพื่อแสดงสถานะการรวบรวมบนสถานะ บางทีฉันอาจได้เป็นกลุ่มมองหาการดำรงอยู่หรือไม่มีอยู่ของไฟล์บางอย่าง (ใช้ไฟล์เป็นตัวแปรบูลีน)? แต่มันดูสกปรกไปหน่อย หวังว่าจะมีวิธีที่ดีกว่า
12 variables 

1
ทำไม p วางบรรทัดที่คัดลอกไว้หลังบรรทัดปัจจุบันแทนที่จะเป็นหลังคำปัจจุบัน
สมมติว่าฉันมีสี่บรรทัดต่อไปนี้: line1 line2 line3 line4 ตอนนี้ถ้าฉันไปที่line1และทำสิ่งyyที่คัดลอกบรรทัดและจากนั้นไปที่จุดเริ่มต้นline3และทำการวางโดยใช้ 'p' ฉันจะได้รับ ... line3 line1 line4 .... ทำไมมันวางline1หลังจากline3ในบรรทัดใหม่ แม้ว่าตอนแรกของฉันจะเป็นเพราะอักขระขึ้นบรรทัดใหม่ $ ถูกแนบกับ line3 และเมื่อฉันกดpเป็นกลุ่มให้ถือว่าline3$เป็นคำเดียวดังนั้นจึงวางหลังจากline3$นั้น อย่างไรก็ตามดูเหมือนว่าฉันเข้าใจผิด เพราะถ้าฉันทำสิ่งนี้line3 $แล้วทำpที่จุดเริ่มต้นของบรรทัดฉันจะได้ผลลัพธ์เดียวกัน ทำไมไม่pสร้างสายใหม่และวางเป็นเส้นใหม่หลังจากที่line3?

1
ไวยากรณ์สีแบบผสมในกลุ่ม
ฉันมักจะเขียนเอกสารในknitrใช้เป็นกลุ่มซึ่งหมายความว่าฉันมีรหัส markdown ผสมกับรหัส R ฉันต้องการให้มีการระบายสีไวยากรณ์ R บนชิ้น R แต่ทำเครื่องหมายหรือไม่มีการระบายสีในส่วนอื่น ๆ ทั้งหมด เป็นไปได้หรือไม่ อย่างไร?

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