Vi & Vim

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

2
วิธีการเริ่มขยาย gui ด้วย qt-neovim?
ฉันใช้ neovim กับ qt-neovim (linux arch) ใน gvim ฉันสามารถเปิดหน้าต่างขยายด้วย: if has("gui_running") set lines 999 columns 999 endif ที่ไม่ทำงานตอนนี้สรรพสินค้าใหญ่ ฉันพยายามลบถ้าไม่สำเร็จ มีวิธีใดบ้างที่ฉันจะบรรลุเป้าหมายนั้น?
9 neovim 

2
ใช้คำสั่ง ex เพื่อตรวจสอบว่าสองบรรทัดเหมือนกันหรือไม่
ผมกำลังมองไปที่คำถามนี้แล้วสงสัยว่าผมอาจจะใช้คำตอบของฉันซึ่งใช้ sedใช้อย่างหมดจด POSIX ex เคล็ดลับคือในขณะที่sedฉันสามารถเปรียบเทียบพื้นที่พักกับพื้นที่รูปแบบเพื่อดูว่าพวกเขาจะเทียบเท่า (กับ G;/^\(.*\)\n\1$/{do something}) ฉันรู้วิธีที่จะทำแบบทดสอบexไม่ ฉันรู้ว่าในกลุ่มที่ฉันสามารถYank บรรทัดแรกแล้วพิมพ์ :2,$g/<C-r>0/dไปเกือบจะทำในสิ่งที่ผมระบุ แต่ถ้าบรรทัดแรกมีอะไร แต่ข้อความตัวเลขและตรงไปตรงมามากนี้จะกลายเป็นไม่แน่นอนแน่นอนเนื่องจากสายจะถูกทิ้งในเป็น regexไม่ใช่แค่สตริงสำหรับการเปรียบเทียบ (และหากบรรทัดแรกมีเครื่องหมายทับหน้าส่วนที่เหลือของบรรทัดจะถูกตีความเป็นคำสั่ง!) ดังนั้นหากฉันต้องการลบทุกบรรทัดในmyfileที่เหมือนกันกับบรรทัดแรก - แต่ไม่ลบบรรทัดแรก - ฉันจะทำเช่นนั้นได้exอย่างไรโดยใช้? สำหรับเรื่องนั้นฉันจะใช้มันได้viอย่างไร มีวิธี POSIX ในการลบบรรทัดหรือไม่หากตรงกับอีกบรรทัดหนึ่ง? บางทีบางอย่างเช่นไวยากรณ์ในจินตนาการ: :2,$g/**lines equal to "0**/d

4
จะแทนที่ข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร
สมมติว่าฉันมีข้อความที่ถูกFnordดึงมาก่อนและเคอร์เซอร์ของฉันอยู่Bที่บรรทัด: M:mock(Baz) ฉันจะเปลี่ยนข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร ปัจจุบันฉันมักจะทำผิดพลาดโดยทำ: di( aka "ลบภายใน ()" SHIFT + P แต่สิ่งที่ทำให้ฉันมีข้อความที่แน่นอนอีกครั้งเนื่องจากข้อความที่ถูกลบจะถูกย้ายไปที่การลงทะเบียน ฉันต้องการ: M:mock(Fnord)

2
ฉันจะใช้ Python plugin บน Windows ได้อย่างไร
ฉันติดตั้ง Windows 7 64- บิตพร้อม python 2.7.11 และ python 3.5.1 (ทั้ง 32- บิต) และฉันได้คอมไพล์ vim ด้วย python / dyn และ python3 / dyn แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: :py print "hello" E887: Sorry, this command is disabled, the Python's site module could not be loaded อย่างไรก็ตามสิ่งต่อไปนี้ใช้ได้ดี: C:\python27\python -c "import site;" และ :py3 print("hello") นี่คือข้อมูลเวอร์ชัน …

1
สัญลักษณ์ '+' หมายถึงอะไรเมื่อเปิดบัฟเฟอร์?
ฉันต้องการเปิดเทอร์มินัลบัฟเฟอร์ในแนวแยก ถ้าฉันลอง:vertical split terminalรับบัฟเฟอร์ชื่อ 'terminal' ไม่ใช่ buffer terminal ฉันเพิ่งเรียนรู้ว่าฉันสามารถทำได้:vertical split +terminalเพื่อเปิดเทอร์มินัลบัฟเฟอร์ แต่ฉันไม่สามารถค้นหาเอกสารช่วยเหลือที่อธิบายว่า + กำลังทำอะไรอยู่ '+' หมายถึงอะไรมันเป็นลักษณะเฉพาะของเทอร์มินัลบัฟเฟอร์หรือเป็นสิ่งทั่วไปมากกว่าหรือไม่ PS ฉันเพิ่งรู้ว่าฉันสามารถทำได้:vertical split | terminalเพื่อให้ได้พฤติกรรมเดียวกัน (อย่างน้อยฉันก็คิดเหมือนกัน)
9 buffers  neovim 

2
วิธีจับคู่คำที่ลงท้ายด้วยตัวอักษรตัวพิมพ์ใหญ่และตัวอักษรที่ระบุได้อย่างไร
ฉันมีคำเหมือนlblSERINOdในประโยค คำจะถูกคั่นด้วยช่องว่างสีขาว ฉันต้องการที่จะเข้ามาแทนที่ในตอนท้ายของคำดังกล่าวทั้งหมดที่มีd uดังนั้นสำหรับตัวอย่างเช่นจะมีลักษณะเช่นlblSERINOdlblSERINOu ฉันลองแล้วs/.*\ud /u /gแต่พูดว่าไม่สามารถหา.*\udได้ ปัญหาคืออะไรที่นี่?

2
ทำไมจะไม่เป็นกลุ่มไฟล์. vimrc ของฉัน
วันนี้ฉันพบว่าฉัน.vimrcไม่มีผล มันก็โอเคแค่ไม่กี่ชั่วโมงที่ผ่านมา เมื่อฉันเปิดตัวเป็นกลุ่มที่มี$vim --plugin, :scriptnamesไม่มีอะไรสะท้อน: .vimrcไฟล์ที่ไม่ได้มา (หมายเหตุ: /etc/vimrcถูกลบเพื่อแก้ไขปัญหานี้) จากนั้นฉันก็ลอง google และพบ$VIMINITตัวแปรที่น่าสงสัย นี่คือค่าของ$VIMINIT: $ echo $VIMINIT set number เอกสารที่เป็นกลุ่มเกี่ยวกับVIMINIT: c. Four places are searched for initializations. The first that exists is used, the others are ignored. The $MYVIMRC environment variable is set to the file that was first found, unless $MYVIMRC …

2
Vim ไม่ใช้ umlauts เป็นอักขระคำ
เมื่อฉันเขียนข้อความภาษาเยอรมันที่มีบางสิ่งเช่นabücdอินสแตนซ์และไปdwข้างหน้าข้อความนั้นจะลบเฉพาะabเนื่องจากไม่ได้แปลüว่าเป็นอักขระคำ เมื่อฉันแก้ไข reStructuredText ฉันมี iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ นั่นอธิบายว่าทำไมเครื่องหมายบนสระไม่ได้ถูกทำเครื่องหมาย แต่ฉันไม่เข้าใจว่าสิ่งนี้มาจากไหน เมื่อฉันเพิ่งเปิด gVim นี่ถูกตั้งค่าเป็น iskeyword=@,48-57,_,192-255 สิ่งนี้มาจากไหน
9 unicode 

1
บัฟเฟอร์เทียบกับแท็บ vs arglist เทียบกับ windows
ทางเลือกมากมาย! สับสนมาก! เมื่อใดจึงควรใช้ค่าอื่น สิ่งเหล่านี้เกี่ยวข้องกันอย่างไร ความแตกต่างระหว่างพวกเขาคืออะไร? พวกเขามีผลต่อคำสั่งที่คุณพิมพ์อย่างไร พวกเขาเกี่ยวข้องกับการลงทะเบียนแมโครเครื่องหมายตัวเลือกและประวัติคำสั่งอย่างไร สิ่งใดที่อยู่ข้างในซึ่งผู้อื่นตัวอย่างเช่นแท็บคือส่วนย่อยของหน้าต่างเหมือนในโปรแกรม GUI ทั่วไปหรือเป็นหน้าต่างส่วนย่อยของแท็บ สิ่งนี้เกี่ยวข้องกับอาร์กิวเมนต์บรรทัดคำสั่ง (อาร์กิวเมนต์หลายรายการ) ที่สามารถเข้าถึงได้ผ่าน:nextและ:prevอย่างไร และสุดท้ายสิ่งใดที่viเข้ากันได้(ถ้ามี) นี้

2
เป็นไปได้ไหมที่จะกำหนดสัญลักษณ์ให้กลุ่ม "Todo"
เป็นไปได้ไหมที่จะเพิ่มเครื่องหมายที่จะแสดงในคอลัมน์สัญญาณเมื่อใดก็ตามที่บรรทัดมีกลุ่มสิ่งที่ต้องทำ (ToDo, FIXME ... ) ปรับเปลี่ยนสีของฉันฉันเปลี่ยนไฮไลต์ของกลุ่มสิ่งที่ต้องทำ แต่ต้องการมีตัวบ่งชี้ในคอลัมน์สัญญาณเช่นข้อผิดพลาดและคำเตือนของ Syntastic

1
ปิดใช้งานการเยื้อง HTML บางส่วนในกลุ่ม
Caveat: ฉันไม่ใช่นักพัฒนาเว็บ ที่ถูกกล่าวว่ามีโอกาสน้อยที่ฉันต้องแก้ไข HTML เมื่อฉันทำฉันสังเกตเห็นพฤติกรรมใน Vim ที่ฉันไม่ชอบและหวังว่าฉันจะเปลี่ยนผ่านการกำหนดค่า เมื่อฉันรหัสฉันมักจะตัดบรรทัดที่ 80 ตัวอักษร บ่อยครั้งที่ฉันต้องแบ่งแท็ก HTML ข้ามบรรทัด สิ่งที่ฉันต้องการคือการเยื้องที่เหมาะสมเมื่อเกิดเหตุการณ์นี้ ตัวอย่างเช่นฉันอาจมีรหัสต่อไปนี้และต้องการให้เยื้องในทำนองเดียวกัน: <a href="http://someverylongurl.com/foo/bar/blaz/SinwzvO.jpg"><img src="http://someverylongurl.com/foo/bar/blaz/Sinwzv0.jpg" class="ri" alt="This is an image"></a> แต่โดยค่าเริ่มต้นการจัดรูปแบบอัตโนมัติของ Vim จะเยื้องแท็ก HTML แยกเป็นระดับเดียวกับแท็ก HTML เริ่มต้นในบรรทัดก่อนหน้า ในคำอื่น ๆ ฉันได้รับสิ่งต่อไปนี้: <a href="http://someverylongurl.com/foo/bar/blaz/SinwzvO.jpg"><img src="http://someverylongurl.com/foo/bar/blaz/Sinwzv0.jpg" class="ri" alt="This is an image"></a> นั่นคือสิ่งที่ฉันไม่ต้องการ เป็นฉันพิมพ์ฉันพบฉันอย่างต่อเนื่องไม่ต้องกลับไปและรอยบุ๋มแก้ไขเช่นนี้ ฉันชอบ autoindent ของ Vim โดยทั่วไปและไม่ต้องการปิดการใช้งานโดยทั่วไป ฉันต้องการเพียงแค่ปิดใช้งานหรือเปลี่ยนการแยกการเยื้องแท็ก HTML …

2
เปลี่ยนภาษา vimtutor
vimtutor ของฉันเป็นภาษาโปรตุเกส ฉันไม่รู้ว่าทำไมเพราะ Windows OS ของฉันเป็นภาษาอังกฤษดังนั้นทุกอย่างอื่น ฉันจำไม่ได้ว่าได้เลือก "โปรตุเกส" ที่ใดก็ได้ในกระบวนการติดตั้งเป็นกลุ่ม ฉันจะเปลี่ยนเป็นภาษาอังกฤษได้อย่างไร

2
vundle“ ปลั๊กอินชนิดของไฟล์ย่อหน้าบน” messes ด้วย tabwidth
ฉันติดตั้ง vundle เมื่อวานและตั้งแต่นั้นมาแท็บที่ฉันกำหนดค่าใน vimrc ของฉันจะถูกละเว้นและตั้งค่ากลับเป็น 4 แทนที่จะเป็น 2 ฉันพบว่าบรรทัดต่อไปนี้หลังจากย่อหน้า vundle เป็นสาเหตุ: filetype plugin indent on การเยื้องของฉันถูกตั้งค่าเช่นนี้: set noexpandtab " Make sure that every file uses real tabs, not spaces set shiftround " Round indent to multiple of 'shiftwidth' set smartindent " Do smart indenting when starting a new line set …

3
ตั้งเครื่องหมายเป็นค่าก่อนหน้า
บางครั้งผมก็ใช้เครื่องหมายนำทางได้อย่างง่ายดายผ่านไฟล์ที่แตกต่างกันโดยใช้mA, mB... และ'A, 'B... และบางครั้ง (บ่อยกว่าที่ฉันต้องการยอมรับ) เนื่องจากความไม่ตั้งใจหรือเหตุผลอะไรก็ตามฉันใช้m[LETTER]กับเครื่องหมายที่มีอยู่แล้วซึ่งจะลบค่าก่อนหน้านี้เมื่อฉันไม่ต้องการ เวลาส่วนใหญ่ของฉันเมื่อฉันทำอย่างนั้นฉันไม่ได้เปิดไฟล์ที่ชี้โดยเครื่องหมายเดิม ในกรณีนี้เมื่อฉันรู้สึกผิดเกี่ยวกับการรับรู้ว่าฉันทำผิดพลาดเป็นไปได้หรือไม่ที่จะได้รับมูลค่าก่อนหน้าของเครื่องหมายอื่นนอกเหนือจากการจดจำว่ามันชี้ไปที่ใดนำทางไปยังตำแหน่งนี้และตั้งค่าอีกครั้งหรือไม่ ฉันไม่พบคำสั่งเช่นนั้นในเอกสารดังนั้นหากไม่มีอยู่จะมีวิธีแก้ปัญหาที่ฉลาดซึ่งคุณบางคนใช้ในสถานการณ์นี้
9 mark 

1
จัดรูปแบบอัตโนมัติ: การตัดในบรรทัดต่อมาเมื่อแทรกข้อความ
หลังจากอ่านhelp textwithและhelp fo-tableฉันคาดว่าเมื่อฉันตั้ง set textwidth=20 " for demonstration set formatoptions=tcq จากนั้นการแทรกข้อความในที่สุดก็มักจะทำให้บรรทัดที่จะตัด แต่นั่นไม่ใช่กรณี การตัดเกิดขึ้นที่ (หรือก่อนหน้า) เคอร์เซอร์ของฉันเท่านั้น และถ้าฉันแปะการห่อจะไม่เกิดขึ้นเลย ตัวอย่าง (กลุ่ม 7.4): 12345678901234567890 This is a long line บรรทัดจะตัดอัตโนมัติหากฉันกดAและเริ่มพิมพ์ แต่ถ้าฉันกด02wiและพิมพ์ "นิ่ง" มันจะไม่พันกัน: 12345678901234567890 This is still a long line ฉันต้องพิมพ์อีก 7 ตัวอักษรก่อนที่มันจะห่อและจากนั้นปัญหายังคงอยู่ในบรรทัดถัดไป: 12345678901234567890 This is still more <-- it wraps here typing and …

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