คำถามติดแท็ก vimrc

Vim อ่านคำสั่งการกำหนดค่าเริ่มต้นจากไฟล์ชื่อ vimrc เมื่อเริ่มทำงาน สิ่งนี้สามารถใช้เพื่อตั้งค่ากำหนดฟังก์ชั่นเรียกใช้งานคำสั่งอัตโนมัติและอื่น ๆ

2
คุณจะรู้ได้อย่างไรว่าตัวแปรใดที่ได้รับการกำหนดครั้งล่าสุด
ฉันกำลังพยายามตั้งค่าg:netrw_list_hideและดูเหมือนจะไม่ทำงาน ไม่ว่าสิ่งที่ผมตั้งในของฉันมันก็มีค่า.vimrc ,^\.\.\=/\=$เฉพาะในกรณีที่ฉันจัดหาvimrcไฟล์ของฉันอีกครั้งมันจะเก็บค่าที่ถูกต้อง ฉันจะแก้ไขข้อบกพร่องนี้ได้อย่างไร ฉันเดาว่ามีปลั๊กอินบางอย่างที่ตั้งค่าตัวแปรนั้นหรือไม่? อาจเป็นไปได้หลังจากที่ฉันvimrcถูกโหลดดังนั้นฉันต้องการดูว่ามันถูกตั้งไว้ที่ไหน

1
ฉันจะเพิ่มกฎการเน้นไวยากรณ์เพิ่มเติมใน vimrc ในพื้นที่ได้อย่างไร
ฉันติดตั้ง gvim บนทั้ง Fedora และ Win7 ฉันพบว่าทั้ง vim และ gvim บน Fedora ไม่ได้เน้นชื่อฟังก์ชั่นในรหัส c ในขณะที่ gvim บน win7 ได้เน้นไว้ ฉันพบว่าใน win7 vim73/syntax/c.vimมีสายเพิ่มเติมในตอนท้าย: syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 hi cFunction gui=NONE guifg=#B5A1FF ถ้าฉันเพิ่มบรรทัดเหล่านี้c.vimใน Fedora, gvim สามารถเน้นชื่อฟังก์ชั่นได้เช่นกัน เพื่อรักษาความสะดวกในการพกพาฉันต้องการเพียงปรับเปลี่ยน.vimrcเพื่อเน้นชื่อฟังก์ชั่น อย่างไรก็ตามหลังจากเพิ่มบรรทัดเหล่านี้ลงใน.vimrcมันไม่ทำงาน ดังนั้นใครสามารถช่วยฉันได้ ฉันค้นหาและมีวิธีแก้ไขมากมายเพื่อเน้นชื่อฟังก์ชั่นเป็นกลุ่ม .vimrcแต่ผมแค่อยากรู้เกี่ยวกับวิธีที่จะทำให้เส้นเหล่านี้ทำงานใน ขอบคุณมาก ๆ!

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

3
ความแตกต่างระหว่าง '\ zs' และ '\ @ <=' อะตอมใน Vim regex คืออะไร
นี่คือสิ่งที่ฉันได้รับจากเอกสาร: \zs"จะเริ่มต้นส่วนไฮไลต์" หลังจากจับคู่ regex ก่อนหน้าและ\@&lt;="จะเริ่มต้นเป็นส่วนหนึ่งที่ไฮไลต์" หลังจากจับคู่ก่อนหน้านี้อะตอม แต่ฉันไม่เข้าใจรายละเอียดปลีกย่อยของเรื่องนี้ดังนั้นทุกคนสามารถอธิบายได้ว่าพวกเขามีความลึกมากกว่านี้อย่างไร นี่คือสิ่งที่ทำให้ฉันอยากรู้: ถ้าฉันวิ่ง /\_s\zsnnoremap เช่นเลือกnnoremapนำหน้าด้วยช่องว่างหรือจุดเริ่มต้นของบรรทัด (เช่น newline จากบรรทัดก่อนหน้าดังนั้น\_ก่อนหน้านั้นs) จากนั้นเรียกใช้gnเพื่อเข้าสู่โหมดภาพและเลือกการแข่งขันนัดถัดไปด้วยเหตุผลบางประการเฉพาะคอลัมน์แรก (เช่น ครั้งแรกnในnnoremap) ถูกเลือก - แม้จะมีความจริงที่ว่าทั้งnnoremapคำที่ไฮไลต์ที่มีการ:hlsearchเปิด อย่างไรก็ตามถ้าฉันเรียกใช้การค้นหาแทน /\_s\@&lt;=nnoremap จากนั้นลองgnเลือกทั้งหมดnnoremapอย่างถูกต้อง เกิดอะไรขึ้นที่นี่? ฉัน (ฉันกล้าพูด) พบข้อบกพร่องที่คลุมเครือบ้างไหม

1
วิธีเปิดใช้งานการตรวจสอบตัวสะกดสำหรับไฟล์บางประเภท?
ฉันพลิกระหว่างไฟล์ Ruby และ Markdown มาก มีวิธีที่ฉันสามารถset spellตั้งค่าโดยอัตโนมัติเมื่อฉันเปิด*.mdไฟล์ แต่ไม่ใช่เมื่อฉันเปิดไฟล์ได้*.rbหรือไม่?

2
ฉันจะแก้ไข Vim ให้ทำงานกับรูปแบบแป้นพิมพ์อื่นได้อย่างไร
ฉันพิมพ์ด้วยรูปแบบแป้นพิมพ์ที่ไม่ใช่แบบ QWERTY หลายปุ่มที่ Vim ใช้อยู่ในแถวบ้าน แต่การผูกกุญแจบางปุ่มไม่ทำงานปุ่มที่ชัดเจนที่สุดคือhjklกุญแจ ฉันจะเปลี่ยนการเชื่อมโยงคีย์เหล่านี้เพื่อให้ทำงานได้ดีขึ้นกับเค้าโครงแป้นพิมพ์ของฉันได้อย่างไรและที่ไหน

2
เป็นไปได้ไหมที่จะใช้ฟังก์ชั่นไคลเอนต์เซิร์ฟเวอร์ของ vim เพื่อรักษาการตั้งค่าให้ตรงกัน
ฉันมักจะมีหลายกลุ่มของการเรียกใช้บนเครื่องเดียวกัน เมื่อฉันทำการเปลี่ยนแปลงกับ vimrc ของฉันฉันสามารถ:source ~/.vimrc(ด้วยการแมปง่าย ๆ หรือ autocmd) แต่เพื่อให้อินสแตนซ์ที่ทำงานอยู่ทั้งหมดแสดงถึงการเปลี่ยนแปลงฉันต้องเรียกใช้งานนั้นในแต่ละครั้งแยกกัน ฉันสามารถใช้clientserverคุณสมบัตินี้เพื่อบอกอินสแตนซ์ทั้งหมดให้โหลด vimrc ของฉันใหม่ได้หรือไม่ ฉันจะสนใจโซลูชันที่ไม่ได้ใช้clientserverด้วย

1
ฉันจะเรียกใช้ autocmd ได้อย่างไรเมื่อเริ่ม Vim โดยไม่มีไฟล์, ไฟล์ที่ไม่มีอยู่หรือไฟล์เปล่า (แต่ไม่ใช่เมื่อเริ่มต้นด้วยไฟล์ที่มีอยู่)
ฉันต้องการเรียกใช้ autocmd ในสถานการณ์ต่อไปนี้เมื่อฉันเริ่ม Vim: โดยไม่ได้ระบุชื่อไฟล์ เมื่อไฟล์ใหม่ เมื่อไฟล์มีอยู่ แต่ว่างเปล่าทั้งหมด ในสามกรณีข้างต้นทั้งหมดฉันต้องการเรียกใช้ autocmd โดยเฉพาะฉันต้องการเริ่มโหมดแทรกโดยอัตโนมัติสำหรับสถานการณ์ข้างต้นเท่านั้น (ไม่ใช่เมื่อฉันเปิดไฟล์ที่มีอยู่แล้ว &amp; ไม่ว่าง) UPDATE: ฉันได้ลองทำสิ่งต่อไปนี้ในของฉัน_vimrcแต่ไม่มีโชค (บวกด้วยฉันไม่แน่ใจว่ามีฟังก์ชั่นในกลุ่มที่นับจำนวนตัวอักษรในไฟล์ (เพื่อดูว่ามันเป็นศูนย์) ก่อนเปิดหรือไม่: if @% == "" || filereadable(@%) autocmd BufRead,BufNewFile * startinsert endif

1
ทำไมลำดับของ: set bg = dark และ: set bg = light สำคัญ?
ในขณะที่พยายามจับคู่จานสีของเทอร์มินัลกับ GVim ฉันสังเกตเห็นสิ่งนี้: เมื่อฉันเปิด GVim และ Vim ฉันเห็น: (นั่นคือไฟล์เดียวกันของฉันvimrc) ถ้าฉันทำ:set t_Co=256ไม่มีอะไรเกิดขึ้นใน GVim (ยกเว้นว่าจะกะพริบ) ในขณะที่สีในเทอร์มินัลตอนนี้ดูแตกต่างกัน ถ้าฉันทำ:set bg=darkตอนนี้ก็ไม่ได้ทำให้แตกต่าง (อีกครั้ง GVim กระพริบ) ถ้าฉันทำ:set bg=lightแล้วจากนั้น:set bg=darkอีกครั้งฉันจะได้รับ: ทั้งสอง:set bg=darkและ:set t_Co=256มีอยู่ในของฉันvimrc ทำไมจะไม่ได้ฉัน:set bgและ:set t_Coติดและทำไมไม่ตั้งค่า:set bg=darkอีกครั้งหลังจากที่:set bg=lightสร้างความแตกต่างที่ แต่เดิมไม่ได้? ฉันใช้ Arch Linux, terminal เป็น GNOME Terminal .gvimrcและฉันไม่ได้มี $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, …

1
ฉันจะไฮไลต์ชื่อการจับคู่“%” (เช่น if / end, for / end) ที่กำหนดโดย matchit.vim ในการเลือกได้อย่างไร
ปัจจุบัน Vim ของฉันเน้นการจับคู่วงเล็บ, เครื่องหมายคำพูด, ฯลฯ ด้วยพื้นหลังสีฟ้าและพื้นหน้าสีขาว - เคอร์เซอร์สามารถเลื่อนไปมาระหว่างสิ่งเหล่านี้%ได้ ขอบคุณ matchit.vim ของฉันฉันยังสามารถสลับกับ%ระหว่าง if / end for / end ฯลฯ - อย่างไรก็ตามสิ่งเหล่านี้ไม่ได้เน้นที่การเลือก ฉันจะไฮไลต์คู่จับคู่เหล่านี้โดยอัตโนมัติเมื่อเลือกได้อย่างไรเช่นจะทำในวงเล็บโดยอัตโนมัติ นอกจากนี้ฉันจะแก้ไขสีพื้นหลังที่ใช้สำหรับคู่เหล่านี้ได้:highlightอย่างไร ขอบคุณล่วงหน้า. ฉันได้อัปเดตคำตอบโดย @Tommy A ด้านล่างเพื่อบัญชีสำหรับmatchit.vimกลุ่มที่ระบุไม่ดีและสถานการณ์อื่น ๆ ที่%ผู้ประกอบการไม่ได้กลับเคอร์เซอร์ไปที่ตำแหน่งเดิมเคย ตรวจสอบความแตกต่างในการวนรอบ "ในขณะที่" ใครก็ตามที่อ่านหัวข้อนี้ควรใช้เวอร์ชั่นนี้เพื่อหลีกเลี่ยงการวนซ้ำไม่ จำกัด : function! s:get_match_lines(line) abort " Loop until `%` returns the original line number; abort if " (1) …

1
ทำไม YouCompleteMe ไม่ทำงานของพารามิเตอร์ทั้งหมด?
ฉันต้องการใช้ YouCompleteMe กับ C ++ semantic semantic แต่หลังจากผ่านไปหลายชั่วโมงฉันไม่สามารถหาสาเหตุที่มันไม่ทำงานอย่างที่คาดไว้ ดูเหมือนว่าทุกอย่างจะทำงานได้ แต่ฉันไม่สามารถทำพารามิเตอร์ฟังก์ชันให้สมบูรณ์ได้ ฉันใช้ Vim บน Archlinux (Gnome Terminal บน Openbox): Linux Arch-PC 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux ฉันติดตั้ง YCM ตามคำแนะนำ (ด้วยการinstall.pyสนับสนุนสคริปต์และเสียงดังกราว) ฉันยังลองกับแพ็คเกจ AUR YCM และได้รับปัญหาเดียวกัน YcmDebugInfo: Printing YouCompleteMe debug information... -- Server has Clang support …

1
เป็นไปได้หรือไม่ที่จะสร้างคำสั่ง "set" ที่กำหนดเองในไฟล์ rc ของฉันและเรียกพวกมันจาก modeline?
ฉันเพิ่งถามคำถามที่ฉันได้เรียนรู้ว่ามันเป็นไปไม่ได้ที่จะผ่านอะไรยกเว้นพารามิเตอร์ไป:setในแบบจำลองเป็นกลุ่ม ฉันเข้าใจถึงความกังวลด้านความปลอดภัย แต่ฉันสงสัยว่าจะไม่มีวิธีแก้ไขปัญหานี้อีกหรือไม่ คำถามล่าสุดเกี่ยวกับ SOเกี่ยวกับการตั้งกระบวนการขนาดใหญ่ของพารามิเตอร์เพื่อให้สอดคล้องกับมาตรฐานการเข้ารหัสมีฉันคิดมันจะเป็นไปได้ที่จะกำหนดเป็น "กลุ่ม" ของสิ่งที่อยู่ในแฟ้ม rc ของฉันที่สามารถเปิดหรือปิดจาก modeline หรือไม่ ยกตัวอย่างโค้ดหลอก แต่มีวิธีสร้างฟังก์ชั่นที่ถูกทริกเกอร์จากพารามิเตอร์ที่ตั้งไว้หรือไม่? set_function! codestyle() if &amp;1 == 'psr-2' set ts=4 set sw=4 endfi if &amp;1 == 'drupal7' set ts=2 set sw=2 iab D8 Drupal 8 endif endset_function สิ่งนี้สามารถถูกทริกเกอร์โดย modeline เช่น # vim: codestyle=psr-2 นี่อาจเป็นวิธีที่คล้ายกับการจับคู่ประเภทไฟล์ แต่อนุญาตการแทนที่ด้วยตนเอง นอกจากนี้ยังจะตั้งค่าสภาพแวดล้อมในรูปแบบที่กำหนดไว้ล่วงหน้าอื่น ๆ หลีกเลี่ยงปัญหาด้านความปลอดภัยของการมีไฟล์ที่เรียกใช้คำสั่งโดยพลการอื่น ๆ …

2
ฉันจะแยกความแตกต่างระหว่าง vim และ vimdiff จากภายใน vimrc ได้อย่างไร
ฉันมีฟังก์ชั่นเป็นกลุ่มซึ่งจะเปิดบัฟเฟอร์ทั้งหมดเป็นแท็บ อย่างไรก็ตามหลังจากที่ฉันเพิ่มฟังก์ชั่นนี้ vimdiff ก็เปิดไฟล์ที่จะเปรียบเทียบเป็นแท็บที่แตกต่างกันและด้วยเหตุนี้จะไม่แสดงความแตกต่าง มีวิธีใดบ้างที่ฉันจะทราบได้ว่า vim หรือ vimdiff ซึ่งเรียกใช้ไฟล์ vimrc ของฉันหรือไม่ function! OpenTabs() let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) if bf &gt; 1 exe "tab 5sball" endif endfunction
10 vimrc  vimdiff 

2
เป็นไปได้ไหมที่จะลบรายการออกจากประวัติการเลิกทำ?
ฉันมีบรรทัดเหล่านี้ใน. vimrc ของฉันเพื่อช่วยในการเยื้อง: autocmd BufReadPost * set noexpandtab | retab! 4 autocmd BufWritePre * set expandtab | retab! 4 autocmd BufWritePost * set noexpandtab | retab! 4 อย่างไรก็ตามพวกเขาสร้างเสียงดังมากในประวัติศาสตร์การเลิกทำ เนื่องจากพวกเขาไม่ได้ทำอะไรจากมุมมองของผู้ใช้ฉันต้องการลบพวกเขาออกจากประวัติหรืออย่างน้อยก็ต้องกำจัดพวกเขาอย่างใดอย่างหนึ่ง มีวิธีทำเช่นนั้นหรือไม่?
10 vimrc  undo-redo 

1
ตัวเลือก 'switchbuf' ควรทำงานอย่างไร
ฉันเพิ่งค้นพบตัวเลือกswitchbufและพยายามที่จะใช้ แต่ฉันไม่สามารถพูดได้ว่าฉันไม่เข้าใจว่ามันจะทำงานอย่างไรหรือถ้ามันใช้ไม่ได้จริง ๆ บน Vim ของฉัน เกี่ยวกับค่าที่เป็นไปได้ที่แตกต่างกัน doc พูดว่า: useopenถ้ามีให้ข้ามไปที่หน้าต่างแรกที่เปิดซึ่ง มีบัฟเฟอร์ที่ระบุ (ถ้ามี) usetab เช่นเดียวกับ "useopen" แต่ให้พิจารณาหน้าต่างในหน้าแท็บอื่นด้วย ฉันได้ใช้ไปแล้วset switchbuf=useopen,usetabและคำสั่งต่อไปนี้ในอินสแตนซ์กลุ่มใหม่: เปิดบัฟเฟอร์แรก :e file1 แยกหน้าจอ :split เปิดบัฟเฟอร์ที่สอง :e file2 กลับไปที่บัฟเฟอร์แรก:e file1(ฉันเคยใช้ด้วย:bN) คำสั่งสุดท้ายเพื่อไปที่บัฟเฟอร์แรกเปิดในการแยกที่สอง useopenจากสิ่งที่ฉันเข้าใจจากเอกสารคำสั่งที่ควรวางเคอร์เซอร์ไปที่แยกแรกที่บัฟเฟอร์ที่มีอยู่แล้วขอบคุณที่เปิดให้ พฤติกรรมก็เหมือนกันเมื่อฉันลองใช้คำสั่งเดียวกันกับแท็บแทนที่จะแยก พฤติกรรมนี้เป็นสิ่งที่คาดหวังหรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถอธิบายว่าตัวเลือกนี้ควรทำอย่างไร? หากไม่ใช่ฉันรู้ว่าฉันจะต้องแก้ไขข้อบกพร่องของฉัน.vimrcแต่อาจมีการตั้งค่าทั่วไปที่รบกวนการทำงานswitchbufหรือไม่
10 vimrc  buffers  split 

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