คำถามติดแท็ก key-bindings

การดำเนินการเมื่อกดปุ่ม สิ่งเหล่านี้เรียกว่าการแมปกุญแจหรือการแมป สำหรับคำถามเกี่ยวกับการผูกคีย์เริ่มต้นรวมถึงการสร้างหรือกำหนดนิยามการโยงคีย์ใหม่

2
ฉันจะใช้ทางลัด Readline ในบรรทัดคำสั่ง vim ได้อย่างไร
เมื่อฉันแก้ไขคำสั่ง Vim ฉันต้องการใช้ทางลัดเดียวกับใน Bash และ REPL อื่น ๆ : M-bเพื่อย้อนกลับคำM-Backspaceเพื่อลบคำก่อนหน้านี้M-uเพื่อแปลงคำเป็นตัวพิมพ์ใหญ่C-kเพื่อตัดจนกว่าจะสิ้นสุด บรรทัด ฯลฯ ฉันสามารถกำหนดค่าคำสั่งบางอย่างใช้:cmapแต่ไม่ใช่ทั้งหมด มีปลั๊กอินหรือการตั้งค่าที่ให้สิ่งนี้หรือไม่? ฉันรู้ceditแต่ฉันพบว่ามันยุ่งยากเมื่อทุกอย่างที่ฉันต้องการคือการป้อนคำสั่งด่วน

1
วิธีการเลื่อนเคอร์เซอร์ไปยังระดับการเยื้องที่ถูกต้องโดยไม่ต้องออกจากโหมดแทรก?
ตัวอย่างเช่นฉันมีรหัส JavaScript นี้ |ตัวละครที่แสดงให้เห็นถึงตำแหน่งของเคอร์เซอร์และมันอยู่ในสายที่ว่างเปล่า function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } หลังจากการดำเนินการที่ร้องขอเนื้อหาจะมีลักษณะเช่นนี้: function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } สิ่งที่ฉันขอคือคำสั่งการแมป ขอบคุณมาก! :-)

2
เพิ่มการปิด "หรือ" โดยอัตโนมัติเมื่อแทรกเข้าไป แต่เมื่อเคอร์เซอร์ไม่ได้อยู่ในสตริงแล้ว
ผมได้กำหนดไว้ในแมปของฉันที่จะใส่วงเล็บใกล้ชิดและการจัดฟันโดยอัตโนมัติเมื่อฉันใส่คนที่เปิดด้วยvimrcinoremap ( ()<esc>i ฉันต้องการทำแบบเดียวกันกับ"และ'แต่เฉพาะเมื่อเคอร์เซอร์ไม่อยู่ในสตริง - เนื่องจากภายในสตริง'นั้นอาจเป็นเครื่องหมายอะโพสโทรฟีแทนที่จะเป็นตัวคั่นสตริง ฉันจะทำสิ่งนี้ได้อย่างไร

4
ทำไมการจับคู่โหมดปกติ <Esc> นี้ส่งผลกระทบต่อการเริ่มต้น
ฉันกำลังประสบปัญหาแปลก ๆ Escกับการทำแผนที่ของโหมดปกติ หากคุณสร้างไฟล์escmapvimrcด้วยเนื้อหา: set nocompatible set showcmd " Doesn't affect the problem: just makes it easier to see nnoremap &lt;Esc&gt; :noh&lt;CR&gt;&lt;esc&gt; จากนั้นเริ่มเป็นกลุ่มโดยใช้ vimrc นี้: vim --noplugin -u escmapvimrc จากนั้นเป็นกลุ่มจะเริ่มต้นในโหมดผู้ประกอบการที่รอการมีคำสั่งรอสำหรับการป้อนข้อมูลเพิ่มเติมการแสดงไฟล์ที่ว่างเปล่าและมีบรรทัดคำสั่งแสดงc:noh หากคุณลบnnoremapบรรทัดปัญหาจะหายไป หากคุณทำการดีบั๊กและทำตามขั้นตอนทุกอย่างที่คุณได้รับผลลัพธ์ต่อไปนี้: Entering Debug mode. Type "cont" to continue. /[...]/escmapvimrc line 1: set nocompatible &gt;s /[...]/escmapvimrc line 2: set showcmd …

3
จะค้นหาคีย์ที่ถูกแมปไปได้อย่างไร?
ฉันรู้ว่าการรัน:mapคำสั่งที่ไม่มีอาร์กิวเมนต์ควรให้รายการของการจับคู่ที่ผู้ใช้กำหนดเอง แต่ตัวอย่างเช่นเมื่อฉันกด Ctrl-W Ctrl-I จะเกิดอะไรขึ้น ไม่ปรากฏใน:mapคำสั่ง ฉันจะรู้ได้อย่างไรว่ากุญแจทำอะไร?

1
ไม่สามารถแมปปุ่ม 'umlaut' ภาษาเยอรมันใน. vimrc
ฉันกำลังพยายามหาวิธีทำแผนที่แป้น umlaut ของเยอรมัน (Ä, ä, Ö, ö, Ü, ü) ทางลัดง่ายๆเช่นนี้จะไม่ทำงาน: inoremap &lt;c-ö&gt; &lt;Esc&gt; ctrl+öไม่มีอะไรเกิดขึ้นเมื่อกด ไม่มีใครรู้วิธีแก้ปัญหานี้?

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

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 &gt; 0 &amp;&amp; s:spell_word !~ expand("&lt;cword&gt;")) 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 &lt;C-c&gt; :call TeardDown()&lt;CR&gt; " Call a function depending on the parameter passed to this one if function == "foo" call Foo() else call Bar() endif endfunction …

3
การทำแผนที่ด้วยการเคลื่อนไหว
ฉันพยายามที่จะเข้าใจว่าฉันจะใช้โอเปอเรเตอร์กับการเคลื่อนไหวที่ตามมาภายในแผนที่ได้อย่างไร ตัวอย่างเช่น: nmap /c c{here we pending for a motion}/&lt;C-r&gt;"&lt;CR&gt; แผนที่ควรทำดังนี้: เปิดใช้งานcโอเปอเรเตอร์และฟังการเคลื่อนไหวครั้งต่อไป เช่นฉันสามารถพิมพ์ที่นี่t,เพื่อเปลี่ยนแปลงทุกอย่างก่อนเครื่องหมายจุลภาคถัดไป ไปที่โหมดแทรกเพื่อลบทุกอย่างระหว่างเคอร์เซอร์และเครื่องหมายจุลภาค; ข้อความที่ถูกลบจะถูกค้นหาโดยอัตโนมัติในรูปแบบ ดังนั้นเพื่อให้ง่ายหลังจากลบข้อความการเคลื่อนไหวฉันออกจากโหมดแทรกพร้อมการเน้นข้อความที่ถูกลบ ฉันจะขอบคุณมากถ้ามีคนช่วยฉันไขปริศนาคดีนี้ UPDATE คำตอบคือสิ่งที่ฉันต้องการ แต่! เมื่อฉันกดพิมพ์สิ่งที่แทนคำนั้นกด/cw &lt;Esc&gt;หลังจากที่ฉันคาดว่าจะทำเช่นเดียวกันกับเหตุการณ์ที่เกิดขึ้นต่อไป แต่หลังจากนำเสนอn(ไปที่เหตุการณ์ถัดไป) และ.(ทำซ้ำคำสั่งสุดท้าย) เพียงแค่เติมข้อความที่พิมพ์ล่าสุดแทนการแทนที่ เป้าหมายหลักของการทำแผนที่คือใช้กับn/Nและ.เพื่อทำซ้ำ ฉันพลาดอะไรไปหรือเปล่า

1
มีตัวเลือกอะไรบ้างในการเข้าสู่โหมดแทรก
ผมใช้ในการเข้าสู่โหมดแทรกโดยaไม่เคยรู้ว่ามีระบบที่เป็นไปได้ที่แทรกโหมดเริ่มต้น บางครั้งฉันก็รำคาญที่aจะวางเคอร์เซอร์หลังตัวอักษรตัวแรกของบรรทัด แต่สิ่งนี้คือ: มันเข้าสู่โหมดแทรกหลังตำแหน่งเคอร์เซอร์ปัจจุบัน จากนั้นผมก็รู้ว่าผมจะเข้าไปแทรกโหมดที่ท้ายบรรทัดโดยใช้หรือด้านล่างบรรทัดปัจจุบันใช้Ao วิธีในโหมดปกติเพื่อเข้าสู่โหมดแทรกมีความแตกต่างกันอย่างไร

1
ใช้เสียงเรียกเข้าและคาเฟอีนในเครื่องเดียวกัน
พื้นหลัง ฉันทำงานที่ห้องปฏิบัติการวิจัยและใช้สามระบบปฏิบัติการที่แตกต่างกันทุกวัน บนเครื่อง Windows และ Mac ฉันใช้Caffeineเพื่อป้องกันไม่ให้เครื่องเหล่านั้นเปิดใช้งานสกรีนเซฟเวอร์ในขณะที่ฉันทำงานกับเครื่องอื่น (Linux ไม่มีปัญหานี้) มันน่ารำคาญมากที่ต้องเข้าสู่ระบบอีกครั้งเมื่อฉันสลับกลับ ปัญหา เมื่อ vim หรือ gvim อยู่ในโหมดแทรกอักขระ&lt;F15&gt;จะปรากฏเป็นระยะ ๆ ในเอกสาร ฉันติดตามมันกลับไปที่คาเฟอีนหลังจากทำการวิจัยเล็กน้อย เว็บไซต์สำหรับคาเฟอีนระบุว่าซอฟต์แวร์ทำงานโดยการจำลอง&lt;F15&gt;เหตุการณ์กดปุ่มเป็นครั้งคราว: จากการกดปุ่มทั้งหมดที่มีอยู่ F15 น่าจะเป็นสิ่งที่รบกวนน้อยที่สุด (ฉันไม่เคยเห็นแป้นคีย์บอร์ด PC มาพร้อมกับปุ่มนั้น!) และมีโอกาสน้อยที่สุดที่จะรบกวนการทำงานของคุณ คาเฟอีนเป็นตัวการที่ชัดเจน อย่างไรก็ตามฉันยังคงต้องการใช้โปรแกรมแก้ไขข้อความที่ชื่นชอบในทั้งสามเครื่องและไม่ต้องการเปลี่ยนเพียงเพื่อรองรับการใช้คาเฟอีน คำถาม มีบางอย่างที่ฉันสามารถใส่vimrcเพื่อทำให้เป็นกลุ่มที่ไม่สนใจ&lt;F15&gt;เหตุการณ์กดปุ่มได้หรือไม่? แก้ไขเพื่อความชัดเจน ฉันไม่สามารถปิดการใช้งานสกรีนเซฟเวอร์ไทม์เอาต์; มันถูกกำหนดโดยแผนกไอทีเพื่อความปลอดภัย ดังนั้นด้วยการทำงานของคาเฟอีนเพื่อให้เป็นไปตามข้อกำหนดฉันต้องล็อคเครื่องด้วยตนเองเมื่อฉันก้าวออกจากโต๊ะ นั่นไม่เลวเลย แต่ปลดล็อคพวกเขาทุกสองสามนาทีคือ นอกจากนี้ฉันไม่ได้เขียน Caffeine ดังนั้นฉันจึงไม่รู้ว่าทำไมผู้พัฒนาเลือกที่จะคลิก&lt;F15&gt;หนึ่งครั้งต่อนาที ฉันอาจจะทำมันแตกต่างอาจมีการเคลื่อนไหวของเมาส์เล็กน้อยหรือแตะทัชแพดตามที่ @ Random832 แนะนำ

1
ข้อดีของการใช้โคลอนสำหรับคำสั่งแทนอัฒภาคคืออะไร
Vi ประสบความสำเร็จในการลดการเดินทางนิ้วและความเร็วให้น้อยที่สุดด้วยโหมดคำสั่ง การสลับ;และ:ดูเหมือนจะบันทึกการกดแป้น Shift พิเศษจำนวนมากสำหรับคำสั่งที่ใช้บ่อยกว่าการค้นหาจดหมายซ้ำ ๆ แต่มีข้อเสียเปรียบในการใช้เค้าโครงคีย์ที่ไม่ได้มาตรฐาน ข้อดีของ:คำสั่งคืออะไร เปรียบเทียบกับประสิทธิภาพและความสง่างามของ Vi โดยรวมแล้วฉันรู้สึกว่าต้องมีเหตุผลบางอย่างที่ฉันขาดไป


2
สลับระหว่างฟอนต์ที่รันไทม์ได้อย่างรวดเร็ว
ในขณะที่แบบอักษรที่สามารถเลือกได้ด้วยตนเองใน GVim จากเมนูฉันมีแบบอักษรไม่กี่ผมอยากจะสลับไปมาระหว่างขึ้นอยู่กับงานในมือ(บิตแมปขนาดเล็กขนาดใหญ่ OTF ... ฯลฯ ) มีวิธีที่ฉันสามารถตั้งค่าการผูกคีย์เพื่อวนรายการฟอนต์ที่กำหนดไว้ล่วงหน้าใน vimrc ของฉันได้หรือไม่?

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