Vi & Vim

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

2
ฉันจะทำให้ Vim ใช้ชื่อไฟล์เริ่มต้นได้อย่างไรเมื่อไม่ได้รับชื่อไฟล์ใด ๆ
ฉันไม่ค่อยเปิดเลยถ้าvimไม่มีชื่อไฟล์ บ่อยครั้งที่ฉันต้องการทดสอบอะไรบางอย่างมักจะเป็นสคริปต์การโยนทิ้งอย่างรวดเร็วและฉันมักจะตั้งชื่อพวกเขาtest.sh(หรือตัวแปรอื่น ๆ เช่นtest.py) ฉันสามารถvimสมมติtest.shชื่อvimไฟล์ได้หรือไม่ถ้าฉันวิ่งโดยไม่มีชื่อไฟล์ ฉันมักจะต้องการใช้ชื่อแทน (เช่นvimsสำหรับvim test.shและvimpสำหรับvim test.pyหรือไปทั้งหมด:w test.sh) vimแต่ผมสงสัยว่ามีวิธีจากภายใน มันจะดียิ่งขึ้นถ้าผมสามารถ จำกัด นี้ไปยังไดเรกทอรีบางอย่างเช่นหรือ/tmp~/dev
17 vimrc  startup 

2
เบียร์ linter + eslint: ข้ามไปที่ข้อผิดพลาดถัดไป
ฉันใช้eslintด้วยaleเพื่อจาวาสคริปต์รหัสของฉัน หลังจากแก้ไขรหัสบล็อกฉันมักจะมีข้อผิดพลาดเล็กน้อยในการแก้ไข การแก้ไขทำได้โดยการนำทางไปยังบรรทัดที่ผิดพลาดถัดไปเพื่ออ่านปัญหาจากไม้บรรทัดและการแก้ไข หากฉันสามารถข้ามขั้นตอนการนำทางและใช้การเชื่อมโยงคีย์เฉพาะเพื่อนำทางไปยังตำแหน่งของข้อผิดพลาดถัดไป - บรรทัดและหวังว่าคอลัมน์จะดีมาก มีวิธีใช้การเชื่อมโยงคีย์เพื่อนำทางไปยังข้อผิดพลาด lint / ale ถัดไปหรือไม่

2
จะใช้การตั้งค่าในแท็บและหน้าต่างที่เปิดอยู่ทั้งหมดได้อย่างไร
มีตัวเลือกในการใช้การตั้งค่าในแท็บและหน้าต่างทั้งหมดเช่นนำ:set numberไปใช้กับแท็บที่เปิดอยู่ทั้งหมดหรือไม่

2
ความแตกต่างระหว่างชุดและ: ชุดคืออะไร?
ฉันกำลังดูปลั๊กอินที่ใช้งานง่ายของTim Popeและฉันสังเกตเห็นสิ่งนี้ใน README ... ดูแหล่งข้อมูลสำหรับรายการคุณสมบัติที่เชื่อถือได้ (ไม่ต้องกังวลมันเป็น:setสายส่วนใหญ่) เมื่อฉันดูที่ต้นทางการ:setโทรเป็นแบบนี้ ... set autoindent ไม่มีการก่อน:set ฉันค่อนข้างแน่ใจว่าฉันเคยเห็น:setในตัวอย่าง.vimrcของจริงเช่นกัน อะไรคือความแตกต่าง? ซึ่งรูปแบบที่ฉันควรใช้ในของฉัน.vimrc?
17 vimscript  vimrc 

6
ฉันจะให้ Vim แสดงเอกสารของฟังก์ชัน C / C ++ ได้อย่างไร
ผู้แก้ไขส่วนใหญ่มีคุณสมบัติเช่นเมื่อคุณกดแป้นบางปุ่มโดยวางคาเร็ตไว้เหนือฟังก์ชันจะปรากฏเอกสารของฟังก์ชันนั้นพร้อมกับจำนวนและชนิดของอาร์กิวเมนต์ที่ใช้งาน ฉันสงสัยว่า Vim ให้การสนับสนุนดังกล่าวหรือไม่ ตัวอย่างเช่นในขณะที่การเข้ารหัสใน C ฉันใช้ฟังก์ชั่นในqsort()ตัว เนื่องจากฉันไม่แน่ใจเกี่ยวกับประเภทและจำนวนของอาร์กิวเมนต์ที่ใช้ฉันต้องการทราบโดยไม่ต้องหนี Vim เป็นไปได้ไหม?

1
เหตุใดฉันจึงได้รับข้อผิดพลาด“ E488: ตัวอักษรต่อท้าย” ในคำสั่งที่กำหนดเองนี้
ฉันมี~/.vimrcที่มีเพียงแค่นี้: function! NewFile() let filename = input("Filename:") endfunction command NewFile :call NewFile()<cr> (แน่นอนความจริงของฉัน.vimrcซับซ้อนกว่า แต่ฉันได้สร้างกรณีทดสอบเล็ก ๆ นี้ขึ้นมาใหม่โดยไม่มีปลั๊กอิน ฯลฯ ) ฉันตั้งใจจะเขียนฟังก์ชั่นที่รองรับการสร้างไฟล์ใหม่ตามเทมเพลต บางรายการอินพุตจะถูกถามจากผู้ใช้ vi เช่นชื่อของไฟล์ ฟังก์ชั่นยังไม่ซับซ้อน (พูดน้อย!) - ทั้งหมดที่ทำคือขอชื่อไฟล์ เมื่อฉันใช้คำสั่งNewFileจากบรรทัดคำสั่ง vi มันเริ่มต้น แต่เมื่อฉันป้อนชื่อไฟล์และกด Enter ฉันได้รับข้อผิดพลาด: E488: Trailing characters ทำไมถึงเป็นอย่างนั้น? ผมทำอะไรผิดหรือเปล่า?

3
แท็บสำหรับการเยื้อง, ช่องว่างสำหรับการจัดตำแหน่ง
ฉันพยายามทำให้เยื้องเป็นกลุ่มโดยอัตโนมัติด้วยแท็บและจัดแนวกับช่องว่าง แต่จริงๆแล้วเยื้องกลุ่มกับแท็บและเติมการจัดตำแหน่งด้วยแท็บ + ช่องว่างสีขาว เป็นกลุ่มมัน: (แต่ละบล็อกเป็นแท็บ) { >--long a = 1, >-->--..b = 2, >-->--..c = 3; } อาจทำได้: { >--long a = 1, >--.....b = 2, >--.....c = 3; } ดังนั้นฉันคิดว่ามีคำถามมากมายเกี่ยวกับหัวเรื่องของแท็บและช่องว่าง แต่ไม่มีคำถามใดเลยที่ให้โซลูชัน Just Works: /programming/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files /programming/29208431/vim-indent-with-tabs-align-with-spaces /programming/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs ที่จริงฉันกำลังใช้: set ai set cindent set cinoptions=(0,:0,u0,U0,g0) ฉันลองปลั๊กอินSmart Tabซึ่งดูเหมือนว่าจะทำงานได้ดี แต่เมื่อฉันลองgg=Gฉันจะได้รับข้อผิดพลาดแปลก ๆ Error …

1
ฉันจะรู้เวอร์ชันของแพตช์ของฉันได้อย่างไร
ฉันได้รับการติดตั้งเป็นกลุ่ม 7.4 แต่ฉันไม่แน่ใจว่าระดับแพตช์เป็นเท่าไรเมื่อติดตั้ง ฉันจะตรวจสอบได้อย่างไร vim --version จะช่วยให้ VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 15 2014 16:18:44) .... แต่มันไม่ได้ให้ระดับการแก้ไขหรือหมายเลขรุ่นรอง
17 version 

5
ฉันจะย้ายเคอร์เซอร์ไปที่กึ่งกลางของบรรทัดปัจจุบันได้อย่างไร
มีวิธีที่ฉันสามารถเลื่อนเคอร์เซอร์ไปที่กึ่งกลางของบรรทัดปัจจุบันหรือไม่? (ตรงกลางของบรรทัดข้อความ - ไม่ใช่กึ่งกลางของความกว้างหน้าจอ) ฉันสงสัยว่ามีทางลัดคล้ายกับMที่เลื่อนเคอร์เซอร์ไปที่กลางหน้าจอหรือไม่ แก้ไข : เพิ่มความกระจ่างในวงเล็บ

1
ฉันจะเปลี่ยนสีสถานะของหน้าต่างที่โฟกัสอยู่ในปัจจุบันได้อย่างไร
ฉันจะเปลี่ยนสีสถานะของหน้าต่างที่โฟกัสอยู่ในปัจจุบันได้อย่างไร ฉันเคยเห็น colorschemes แก้ไขสิ่งนี้ นี่คือกลุ่มไฮไลต์บางประเภทหรือไม่ หรืออย่างอื่น?

3
ฉันสามารถออกเชลล์แบบโต้ตอบในหน้าต่าง Vim ได้หรือไม่?
ฉันรู้ว่าฉันสามารถ:!หรือ:r!ดำเนินการคำสั่งภายนอกและเลือกที่จะแทรกเอาต์พุตลงในข้อความ ฉันสามารถแสดงได้:!shและฉันจะวางไข่กระสุนที่จะมีชีวิตอยู่จนกว่าฉันจะออก - แต่ในขณะที่กระสุนทำงานอยู่ Vim คือ 'หลับ' และไม่สามารถเข้าถึงได้ ฉันต้องออกจากเปลือกหอยและวางไข่ใหม่ถ้าฉันต้องการกลับไปเป็นกลุ่มชั่วครู่ - ไม่มีประโยชน์มาก ฉันสามารถเข้าถึงเปลือกปลายตรงข้ามโดยระงับการเป็นกลุ่มที่มี^Zและจัดการงานที่เป็นกลุ่มผ่านbg, และfg jobsมันสมเหตุสมผลมากกว่า แต่ยุ่งยากในระยะยาว ฉันสามารถใช้Screenถ้ามันมีอยู่ (มักจะไม่) หรือเปิดหลายหน้าต่างของตัวจัดการหน้าต่างของฉัน (และ ssh เพื่อกำหนดเป้าหมายโฮสต์จากแต่ละหน้าต่างตามลำดับเพื่อให้ทั้งกลุ่มและเชลล์บนโฮสต์ระยะไกลยุ่งยากอีกครั้ง) มันจะเรียบร้อยถ้า Vim อนุญาตให้ฉันเปิดเซสชันของเชลล์และเก็บไว้พูดในหน้าต่าง (ภายใน) ของหน้าต่างหรืออนุญาตให้ฉันสลับไปมาและย้อนกลับ เป็นไปได้อย่างนี้ไหม?

8
วิธีการเปิดใช้งานคุณสมบัติ + python ในกลุ่ม
ฉันต้องการติดตั้งปลั๊กอินเป็นกลุ่มปลั๊กอินนี้ต้องมี+pythonคุณสมบัติดังนั้นเมื่อฉันเปิดเป็นกลุ่มและพิมพ์:versionมันจะปรากฏ-pythonขึ้น ฉันจะเปิดใช้งานได้อย่างไร ขอบคุณ
17 installing 

1
ทำไม“ โอเปอเรเตอร์” +“ โมชั่น” จึงทำงานไม่สอดคล้องกัน?
นี่คือสิ่งที่ทำให้ฉันรำคาญใจมานาน แต่ฉันไม่เคยถาม สมมติว่าข้อความในบัฟเฟอร์ของคุณมีลักษณะดังนี้: Hello World ถ้าฉันวางเคอร์เซอร์ไว้ที่ใดที่หนึ่งในบรรทัด 2 และทำykเคอร์เซอร์ของฉันจะสิ้นสุดที่บรรทัดที่ 1 นี่ดูเหมือนจะบอกเป็นนัยถึงโอเปอเรเตอร์และการเคลื่อนไหวก็เลื่อนเคอร์เซอร์ด้วย อย่างไรก็ตามถ้าฉันเริ่มต้นในบรรทัดที่ 1 และทำyjเคอร์เซอร์ของฉันจะยังคงอยู่ในจุดเดียวกัน ความไม่ลงรอยกันแบบเดียวกันเกิดขึ้นกับกุญแจจำนวนมาก Moves Doesn't move gg G h l { } ( ) T t F f ? / แล้วพฤติกรรมนี้เป็นอย่างไร สิ่งนี้คาดหวังและบันทึกไว้เป็นอย่างดีหรือไม่? มีชื่อนี้ไหม สามารถแทนที่ได้หรือไม่ โดยทั่วไปแล้วดูเหมือนว่า "การเคลื่อนไหวไปข้างหลังการส่งต่อไม่ได้" แต่มีวิธีที่ฉันสามารถบอกได้อย่างชัดเจนว่าตัวดำเนินการ + การเคลื่อนไหวจะย้ายเคอร์เซอร์หรือไม่?

5
ฉันจะแทรกข้อความที่ส่วนท้ายของกลุ่มบรรทัดได้อย่างไร
สมมติว่าฉันมีบล็อกข้อความ ... Lorem ipsum Lorem ipsum dolor Lorem ipsum dolor sit Lorem ipsum dolor sit amet ... และฉันต้องการแทรก a .ท้ายบรรทัดแต่ละบรรทัด อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

5
ฉันสามารถทำสิ่งที่มีการโต้ตอบ: การแทนที่ (การค้นหาและแทนที่) ได้หรือไม่?
บางครั้งฉันใช้:sกับ regexp ที่ซับซ้อนซึ่งอาจหรืออาจไม่ถูกต้องหรือไม่แน่ใจว่าฉันต้องการแทนที่การแข่งขันทั้งหมดหรือไม่ มีวิธีใดบ้างที่ฉันสามารถบอกให้ Vim ยืนยันการแข่งขันทุกครั้งที่พบก่อนที่จะแทนที่ข้อความจริงหรือไม่
17 substitute 

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