Vi & Vim

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

2
Regex ใน Vi: มีวิธีใช้คลาสอักขระภายในกลุ่มได้อย่างไร (เช่น [\ s \ w])
ใน Vim คลาสอักขระจะ\sตรงกับอักขระช่องว่างใด ๆ เมื่อฉันใช้ตัวอักษรพิเศษผู้ที่อยู่ในกลุ่มเช่น[\s\w]มันไม่ตรงกับช่องว่างเดียวหรือตัวอักษรคำก็ไม่ตรงหรือsw เราใช้คลาสตัวละครในกลุ่มได้อย่างไร

5
การตั้งค่าและปลั๊กอินเมื่อรูต (`sudo vim`)?
มันน่าผิดหวังจริง ๆ เมื่อฉันต้องการแก้ไขไฟล์เป็น root และใช้sudo vim somefile.confและฉันไม่สามารถใช้การโยงคีย์และการตั้งค่าและปลั๊กอินของฉัน มีวิธีรับการปรับแต่งทั้งหมดของฉันเมื่อฉันต้องการแก้ไขเป็น root หรือไม่? ฉันใช้ vim-plug สำหรับปลั๊กอินของฉัน

5
แสดงรายการชุดสีที่ถูกต้อง?
ฉันเพิ่งค้นพบเกี่ยวกับ:colorschemeคำสั่ง มีวิธีที่ฉันสามารถรับรายการชุดรูปแบบสีที่ถูกต้องจาก Vim หรือไม่? ฉันต้องการที่จะสามารถทำเช่นนี้จากภายในเป็นกลุ่มไม่ใช่จากรายการบางแห่งบนอินเทอร์เน็ต

2
ฉันจะตรวจสอบค่าของตัวเลือก Vim ใน Vimscript ได้อย่างไร
ใน Vimscript ฉันจะตรวจสอบค่าปัจจุบันของตัวเลือก Vim ได้อย่างไร ในการทำอย่างละเอียดฉันต้องการให้คำสั่งเปลี่ยนจากโหมด Full-GUI ( guioptions=+tM) เป็นโหมด Hacker ( guioptions=-tM) อย่างไรก็ตามฉันไม่สามารถหาวิธีแยก:set guioptions?ค่าได้

2
วิธีการบอกเป็นกลุ่มไม่พยายามที่จะแตกไฟล์
ฉันพยายามเปิด.xlsxไฟล์ใน Vim แต่มีข้อผิดพลาดว่า: ***error*** (zip#Browse) unzip not available on your system ฉันรู้ว่ามันเป็นไฟล์ไบนารี แต่ฉันต้องการที่จะตรวจสอบบางอย่างและอาจแปลงเป็นเลขฐานสิบหก ฉันสังเกตเห็นว่าถ้าฉันเปลี่ยนนามสกุลแล้ว Vim จะไม่พยายามคลายซิปอีกต่อไป ซึ่งทำให้ฉันคำถามของฉัน: มีวิธีบอก vim ให้เปิดไฟล์โดยไม่พยายามคลายซิปหรือไม่? FWIW ฉันใช้ Vim 7.4 ใน Windows 7

4
ฉันสามารถข้ามไปยังการประกาศฟังก์ชั่นหรือคำจำกัดความในโครงการไฟล์ C ++ หลายรายการได้หรือไม่
ฉันสามารถข้ามไปยังการประกาศฟังก์ชั่นหรือคำจำกัดความในโครงการไฟล์ C ++ หลายรายการได้หรือไม่ ให้บอกว่าฉันมีไฟล์ส่วนหัวfoo.hpp: int bar(); และไฟล์ต้นฉบับfoo.cpp: #include "foo.hpp" int bar() { return 42; } และไฟล์หลักmain.cpp: #include "foo.hpp" int main() { bar(); return 0; } กลุ่มสามารถค้นหาทั้งคำจำกัดความและการประกาศของฟังก์ชันbar()จากmainฟังก์ชันได้หรือไม่?

1
ประวัติคำสั่งถูกแก้ไขได้อย่างไรระหว่าง Vim หลายอินสแตนซ์?
Vim จะเก็บประวัติคำสั่ง ex (สามารถเข้าถึงได้ผ่าน:↑และq:) และประวัตินั้นจะคงอยู่หลังจากเลิก ถ้าฉันเรียกใช้หลายอินสแตนซ์ของ Vim (ผู้ใช้เดียวกัน, โฮมไดเร็กตอรี่เดียวกัน), Vim จะทำการอนุญาโตตุลาการระหว่างประวัติคำสั่งอย่างไร? ดูเหมือนว่ากระบวนการสุดท้ายที่จะออกจากการชนะ มีวิธีการเก็บประวัติคำสั่งของอินสแตนซ์ทั้งหมดหรือไม่

6
วิธีดูว่าปลั๊กอินใช้งานอยู่หรือไม่
ฉันจะทราบได้อย่างไรว่าปลั๊กอินชนิดไฟล์ (เช่นvim-latexsuite) ได้รับการติดตั้งและเปิดใช้งานเมื่อฉันเปิดไฟล์ที่เหมาะสมหรือไม่ เครื่องมือแก้ไขยอดนิยมอื่นจะระบุว่า "โหมดรอง" ที่เกี่ยวข้องทำงานอยู่ สิ่งที่เป็นกลุ่มเทียบเท่า

2
ฉันจะเปลี่ยนขนาดเริ่มต้นของหน้าต่างปลั๊กอิน (NerdTree, Taglist ฯลฯ ) ได้อย่างไร
ฉันใช้ปลั๊กอิน Taglist และ NerdTree ค่อนข้างบ่อย โดยปกติแล้วหน้าต่างที่เปิดขึ้นทางด้านซ้ายจะเล็กเกินไปและฉันต้องขยายออก ฉันมักจะทำ: 10 CTRL+w > มีวิธีการเปลี่ยนความกว้างเริ่มต้นของหน้าต่างของ NerdTree และ Taglist หรือไม่?

1
Ctrl-n เสร็จสิ้นใช้เวลานานสำหรับ“ การสแกนไฟล์ที่รวมอยู่”
ฉันกำลังแปรงทักษะความเป็นตัวเองและเล่นซอกับการทำให้เสร็จโดยใช้คำสั่ง Ctrl-n ฉันกำลังเขียนโปรแกรมใน Perl เมื่อฉันอยู่ในโหมดแทรกและกด Ctrl-n ฉันได้รับข้อความว่า "การสแกนไฟล์รวม" ลงที่ด้านล่างของเทอร์มินัลและดูเหมือนว่ามันกำลังสแกนไฟล์ในไดเรกทอรีการกระจาย perl ขั้นตอนนี้อาจใช้เวลาหลายวินาทีก่อนที่จะเสร็จสิ้น ดูเหมือนว่าจะเป็นเช่นนี้กับแพคเกจที่ฉันใส่ซึ่งใส่ความเห็น: #use Moose; ดังนั้นฉันต้องลบบรรทัดเหล่านี้เพื่อให้คุณสมบัตินี้มีค่า ฉันพลาดอะไรไปรึเปล่า? ฉันใช้ปลั๊กอินสนับสนุน perl

4
เลื่อนหนึ่งในสี่ (25%) ของหน้าจอขึ้นหรือลง
ฉันมักจะพบว่าการเลื่อนหน้าเต็มทำให้สับสนเกินไปครึ่งหน้ามากเกินไป แต่หน้าไตรมาสเหมาะ ขณะนี้ฉันทำได้เพียงกดปุ่มลูกศรค้างไว้ ฉันจะเลื่อน 25% ของหน้าขึ้นและลงได้อย่างง่ายดายได้อย่างไร

2
ฉันจะทำให้ Vim แสดงหลายบรรทัดหลังจาก EOF ได้อย่างไร
ในกลุ่มฉันไม่ชอบว่าเมื่อคุณไปถึงจุดสิ้นสุดไฟล์แล้วจะใส่บรรทัดสุดท้ายที่ด้านล่างของหน้าจอ มีอยู่แล้วเพื่อให้บรรทัดสุดท้ายเป็นอะไรบางอย่างเช่น 10 บรรทัดด้านบนด้านล่างของหน้าจอและเพียงแค่ทำบรรทัดว่างเปล่าใต้?

3
ฉันจะคัดลอกไฟล์ใน netrw ได้อย่างไร
./A/B/ไดเรกทอรีการทำงานปัจจุบันคือ เอกสารที่ว่างเปล่าจะถูกเปิดเมื่อฉันพิมพ์vimและ netrw ถูกเปิดด้วยคำสั่ง:e.หน้าต่างถูกแยกตามและฉันสามารถนำทางไปยังไดเรกทอรีระดับบนคือvs. ./A/ตอนนี้ผมต้องการคัดลอกไฟล์a_file.jpgจากไป./A/B/./A/ ฉันลองyyใช้ไฟล์เป้าหมายและpในหน้าต่างเป้าหมาย (ไดเรกทอรี) แต่ไม่บรรลุเป้าหมาย มีวิธีใดที่สามารถบรรลุเป้าหมายโดยไม่ต้องติดตั้งปลั๊กอินเสริมหรือไม่

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

2
ป้องกัน Vim จากการล้างเครื่องหลังจากออก
ถ้าฉันทำ: $ less file และกดqเพื่อออกlessฉันยังเห็นข้อความเดียวกับที่ฉันเห็นบนหน้าจอเมื่อlessยังทำงานอยู่ อย่างไรก็ตามถ้าฉันทำ $ vim file และ:qเทอร์มินัลของฉันว่างเปล่า ... ภาพหน้าจอของเทอร์มินัลของฉันหลังจากออกจากlessและvim: ฉันจะป้องกันสิ่งนี้ได้ไหม? นี้เป็นเพียงบนระบบลินุกซ์ของฉัน ระบบ FreeBSD ฉันใช้งานได้จริงตามที่คาดไว้ (โดยใช้ซอฟแวร์ / ตั้งค่าเดียวกันทุกรอบTERMคือxterm-colorสำหรับทั้งสองvim -u NONEไม่ได้สร้างความแตกต่าง) ตัวอย่างของสิ่งที่ฉันต้องการ:
15 terminal  linux  quit 

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