Vi & Vim

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

2
ฉันจะโหลดบัฟเฟอร์ทั้งหมดพร้อมกันได้อย่างไร
เมื่อทำงานในสาขาฟีเจอร์ในgitฉันมักจะต้องซ่อนการเปลี่ยนแปลงของฉันเพื่อส่งการแก้ไขข้อบกพร่องไปยังสาขาหลัก เมื่อฉันทำงานกับการเปลี่ยนแปลงฉันgit stash popซึ่งปรับปรุงการประทับเวลาในไฟล์ แม้ว่าไฟล์จะเหมือนกัน แต่ครั้งต่อไปที่ฉันพยายามบันทึกฉันจะได้รับ: คำเตือน: ไฟล์มีการเปลี่ยนแปลงตั้งแต่อ่าน !!! คุณต้องการเขียนถึงมันจริง ๆ (y / n)? git stash popฉันไม่ต้องการที่จะโหลดไฟล์โดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงบนดิสก์เท่านั้นเมื่อฉัน ตอนนี้ฉันโหลดแต่ละบัฟเฟอร์อีกครั้งด้วยตนเอง ( :e) มีวิธีใดที่ฉันสามารถทำได้ในคำสั่งเดียว?
20 buffers  load 

3
วิธีการทำให้ regex matchers ไม่โลภ?
ฉันพยายามใช้ regex เพื่อแทนที่ข้อความในไฟล์ (แทนที่ URL แบบเต็มด้วยโปรโตคอล / โดเมน /): :%s/\(https\?:\/\/.*?\/\).*/\1/gc น่าเสียดายที่.*?ไม่ตรงกับสตริงแม้จะพยายามหลีกเลี่ยง?ปริมาณ ปริมาณที่ไม่โลภควรหนีในกลุ่มได้อย่างไร?

2
ฉันจะทำให้ Vim วางเคอร์เซอร์ไว้ที่จุดเริ่มต้นของอักขระแท็บแทนที่จะสิ้นสุดได้อย่างไร
เปิดบัฟเฟอร์ที่ว่างเปล่าและแทรกอักขระแท็บจากนั้นออกจากโหมดปกติ เมื่อคุณวางเคอร์เซอร์ (โหมดปกติ) บนแท็บแถบนั้นจะอยู่ทางด้านขวาของช่องว่าง ฉันกำลังมองหาวิธีดังนั้นเคอร์เซอร์จะอยู่ทางด้านซ้ายของช่องว่างแทน ขอบคุณ!

1
วิธีกำหนดป๊อปอัพ / เมนูที่กำหนดเองใน vimrc
การกำหนดทุกฟังก์ชั่นที่มีประโยชน์ให้กับคีย์นั้นใช้งานได้ดีสำหรับเครื่องมือที่ใช้บ่อย แต่มีการดำเนินการบางอย่างที่ฉันใช้บ่อยครั้งvimrcมาก ฉันเห็นปลั๊กอินเช่น CtrlP เปิดรายการป๊อปอัพดังนั้นควรเป็นไปได้ ดังนั้นคำถามของฉันคือ: วิธีกำหนดเมนูป็อปอัพที่กำหนดเองซึ่งสามารถเรียกใช้คำสั่งต่าง ๆ ได้อย่างไร หมายเหตุ: ควรรันในเทอร์มินัลด้วย บางอย่างเช่นปลั๊กอิน CtrlP หรือ dmenu บน X11 เหมาะอย่างยิ่งที่คุณสามารถปรับแต่งตัวเลือกต่าง ๆ ในขณะที่คุณพิมพ์ แต่เมนูประเภทอื่นจะมีประโยชน์เช่นกัน
19 vimrc 

1
ฉันจะเปิดใช้งานไวยากรณ์เฉพาะภาษาภายใน heredoc ได้อย่างไร
เมื่อฉันแก้ไขไฟล์ PHP และฉันกำหนดสตริงใน heredoc การเน้นไวยากรณ์จะเปิดใช้งานภายใน heredoc หากเป็นไวยากรณ์ JavaScript หรือไวยากรณ์ HTML หรือไวยากรณ์ SQL อย่างไรก็ตามมันจะไม่ทำงานสำหรับไวยากรณ์ CSS ตัวอย่าง (ถ้าเราสร้างไฟล์ PHP ใหม่ที่เรียกhello.phpด้วยรหัสต่อไปนี้): <?php $foo = <<<"JAVASCRIPT" var hello = "hello"; JAVASCRIPT; $bar = <<<"CSS" /* This code below should be syntax-highlighted. */ .hello { font-weight: bold; } CSS; JAVASCRIPTบล็อกเป็นไฮไลท์ได้อย่างถูกต้อง แต่CSSบล็อกไม่ได้ นอกจากนี้ถ้าผมทำงานSynStackในvarคำหลักในรหัสบล็อก JavaScript, ฉันได้รับ['phpRegion', 'phpHereDoc', …

1
กำหนดว่าปลั๊กอินใดรับผิดชอบการเชื่อมโยงคีย์
ฉันกำลังจะตอบคำถาม แต่รู้ว่าคำตอบของฉันขึ้นอยู่กับการเชื่อมโยงคีย์ที่ได้รับจากปลั๊กอินที่ฉันติดตั้ง ยิ่งไปกว่านั้นฉันไม่รู้ว่าปลั๊กอินตัวใดมีให้ วิธีเดียวที่ฉันรู้ในการแก้ปัญหานี้คือ "การค้นหาแบบไบนารี" ปลั๊กอินที่ติดตั้งของฉันโดยการปิดการใช้งานครึ่งหนึ่งและเปิดใช้งานอีกครึ่งหนึ่ง ฉันใช้ Vundle เพื่อจัดการปลั๊กอินของฉันดังนั้นการวนซ้ำแต่ละครั้งจะกำหนดให้ฉันแสดงความคิดเห็นเฉพาะส่วนของรายการปลั๊กอิน แต่ยังคงเป็นกระบวนการที่เงอะงะ มีวิธีที่ดีกว่าในการพิจารณาว่าปลั๊กอินใดรับผิดชอบต่อการเชื่อมโยงคีย์ที่กำหนด? มีวิธีการตรวจสอบว่าการผูกคีย์ที่กำหนดให้โดยvimrcไฟล์ของฉันโดยตรงหรือไม่? ฉันรู้ว่า Vim ไม่มีความคิดในตัวของปลั๊กอินดังนั้นอาจเป็นคำถามที่ใช้ถ้อยคำอย่างแม่นยำมากขึ้นว่า

2
เปิดไฟล์. md เป็น Markdown
โดยค่าเริ่มต้นจะเปิดไฟล์. md ทั้งหมดเป็นรหัส "modula2" ฉันไม่เคยได้ยิน modula2 และฉันไม่ได้วางแผนที่จะใช้ ฉันจะบอกให้กลุ่มปฏิบัติfoo.mdเช่นเดียวกับ Markdown (เช่นถ้าฉันพิมพ์:set ft=markdown) ได้อย่างไร?
19 filetype 

2
แก้ไขข้อผิดพลาดการสะกดอัตโนมัติ
ฉันเปิดใช้งานการตรวจการสะกดด้วย :set spell spelllang=en_us ตอนนี้ฉันสามารถแก้ไขการสะกดคำด้วยการพิมพ์1z=(นั่นคือเลือก1การแก้ไขตัวสะกดเซนต์z=) ( ) ฉันจะทำให้คำนี้ทำงานโดยอัตโนมัติกับคำก่อนหน้าเมื่อใดก็ตามที่ฉันพิมพ์เว้นวรรคโดยไม่มีความล่าช้าใด ๆ นอกจากนี้ยังพยายามที่จะคำว่า "แก้ไข" ที่สะกดถูกต้องแล้ว (ซึ่งเป็นเหตุผลที่ฉันไม่สามารถทำสิ่งที่ชอบinoremap <space> <esc>mmb1z=`ma<space>) ดังนั้นฉันเพียงต้องการที่จะแก้ไขทุกคำที่ฉันประเภทถ้ามันสะกดผิด มีวิธีการแก้ไขคำที่สะกดผิดใน Vim โดยอัตโนมัติหรือไม่?

6
ตั้งค่าสีเคอร์เซอร์ที่แตกต่างกันเมื่อใช้คำที่เน้น
ด้วย colourscheme ปัจจุบันที่ฉันใช้มันยากที่จะหาตำแหน่งที่เคอร์เซอร์วางไว้เมื่อนำทางผ่านผลการค้นหา สีที่ไฮไลต์และสีของเคอร์เซอร์ผสมกันทำให้หาเคอร์เซอร์ได้ยาก ฉันจะตั้งค่าสีเคอร์เซอร์ได้อย่างไรเมื่ออยู่ในคำที่เน้นสี

4
ฉันจะจัดการกับบรรทัดที่ยาวมากในข้อความ (500+ ตัวอักษร) ได้อย่างไร
สำหรับบางรูปแบบข้อความการแบ่งบรรทัดจะสำคัญ ตัวอย่างเช่นฉันมักใช้ Vim ในการเขียนเอกสาร MediaWiki ซึ่งคุณไม่สามารถวาง linebreak ที่ไหนก็ได้ (ไม่เหมือนกับ Markdown) ดังนั้นฉันจึงถูกบังคับให้เขียนบทที่มีตัวละครมากมาย สิ่งนี้สามารถนำไปสู่ความยาว (200+ ตัวอักษร) หรือแม้กระทั่งความยาวมาก (1,000+ ตัวอักษร) ฉันพบว่ามันน่าอึดอัดใจมากที่จะใช้ในกลุ่ม ตัวอย่างหนึ่งคือถ้าฉันต้องการแก้ไขบางอย่างที่อยู่กลางบรรทัดอักขระ 1,000 ตัวฉันต้องเลื่อนเคอร์เซอร์ของฉัน 500 ครั้ง สิ่งนี้สามารถทำให้เร็วขึ้นด้วยwหรือ/แต่ก็ยังคงอึดอัดใจ มีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้หรือไม่? ปุ่มเคลื่อนไหวที่ดีขึ้น? บางส่วนของ "การตัดคำแบบปลอม" (ข้อความมีลักษณะเหมือนtw=80แต่ไม่มี\nในไฟล์) หรืออย่างอื่น

4
ฉันจะใช้คำสั่งกับทุกบรรทัดได้อย่างไร
หากฉันต้องการเยื้องบรรทัดทั้งหมดในเอกสารฉันสามารถพิมพ์>Gเพื่อใช้กับบรรทัดปัจจุบันและด้านล่างตามด้วยและ>ggเพื่อใช้กับบรรทัดข้างต้น มีชุดค่าผสมที่ฉันสามารถใช้เพื่อนำ>ไปใช้กับทุกบรรทัดในคราวเดียวได้หรือไม่?

2
วิธีที่ง่ายที่สุดในการเริ่ม Vim ในโหมดส่วนตัว
ฉันต้องการเริ่ม Vim ในโหมดส่วนตัวได้อย่างง่ายดาย ลองกำหนดโหมดส่วนตัวเป็นโหมดที่ใช้ชุดคำสั่งนี้: set history=0 set nobackup set nomodeline set noshelltemp set noswapfile set noundofile set nowritebackup set secure set viminfo="" แจ้งให้เราทราบหากคุณสามารถนึกถึงคำสั่งเพิ่มเติมที่เหมาะสมกับโหมดส่วนตัว ประเด็นคือฉันไม่สามารถคิดถึงวิธีที่สั้นและง่ายในการเริ่ม Vim ด้วยการตั้งค่านี้ นี่คือแนวคิดที่ฉันคิดไว้: โหลด. vimrcprivate แทน. vimrc คุณสามารถใส่คำสั่งที่จำเป็นทั้งหมดลงใน. vrrcprivate แล้วเริ่ม Vim ดังนี้: vim -u .vimrcprivate กำหนดและเรียกใช้Private()ฟังก์ชัน แนวคิดอื่นเพิ่มรหัสเช่นนี้ใน. vimrc ของคุณ: function Private() " set of commands here …

1
ฉันจะทำให้ gx รู้จัก URL แบบเต็มเป็นกลุ่มได้อย่างไร
โดยค่าเริ่มต้นถ้าบัฟเฟอร์ในกลุ่มมี URL เช่นhttp://www.google.com, gxในโหมดปกติจะเปิดเบราว์เซอร์ที่มี URL ที่ มันมีประโยชน์มาก อย่างไรก็ตามหาก URL มีพารามิเตอร์ URL (เช่นhttp://www.google.com/search?q=stuff) ดังนั้นพารามิเตอร์ URL จะไม่ได้รับ (เช่นเพิ่งhttp://www.google.com/searchเปิด) ฉันใช้ MacVim 7.4 patch 183 กับ Chrome เป็นเบราว์เซอร์หลัก (บน OS X 10.9) มีวิธีง่าย ๆ โดยมีการปรับแต่งน้อยที่สุดเพื่อให้gxรู้จัก URL เต็มหรือไม่?

3
ฉันจะหยุดการบันทึกในบรรทัดคำสั่งได้อย่างไร
เมื่อฉันบันทึกแมโครด้วยqและฉันก็เสร็จฉันสามารถพิมพ์: q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดปกติหรือมองเห็น <c-o>q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดแทรก .. ฉันจะหยุดการบันทึกได้อย่างไรถ้าแมโครของฉันสิ้นสุดในโหมดคำสั่ง

1
ฉันจะข้ามไปยัง "ย่อหน้า" ถัดไปได้อย่างไร
ตอนนี้ฉันกำลังทำงานกับบล็อกข้อความบางส่วนที่มีความยาวมากกว่า 1,000 บรรทัด มีวิธีง่ายๆในการย้ายไปยังจุดเริ่มต้นของย่อหน้าถัดไปหรือไม่? วิธีแก้ปัญหาของฉันตอนนี้กำลังค้นหาอักขระบรรทัดใหม่ที่ต่อเนื่องกันสองตัว: /\n\n วิธีแก้ปัญหาอื่นก็คือ vip Esc j vip วี isually เลือกฉัน n P aragraph (ซึ่งจะนำคุณไปยังจุดสิ้นสุดของย่อหน้า) Esc หลบหนีจากการเลือกภาพ j ย้ายลง

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