คำแนะนำสำหรับรายการใน sysadmins .vimrc


21

อย่างน้อยที่สุดฉันมักจะคอมเม้นท์ "ซินแทกซ์" ใน / etc / vim / vimrc


ระวังการมีไวยากรณ์อยู่เสมออาจเป็นความคิดที่ไม่ดีถ้าคุณแก้ไขไฟล์ขนาดใหญ่บ่อยๆ สำหรับไฟล์ที่มีขนาดใหญ่ (หลายสิบหรือหลายร้อย MB) การเน้นไวยากรณ์อาจทำให้กลุ่มไม่มีความรับผิดชอบเป็นเวลาหลายวินาทีเนื่องจากกิน CPU จำนวนมาก เพียงลองแก้ไขไฟล์ XML ขนาดใหญ่ ... แน่นอนคุณสามารถทำได้เสมอ: ปิด (เมื่อมีการเรียกคืนข้อมูลแล้ว ... )
sleske

คำตอบ:


4

CTO ของเรามีคุณสมบัติที่เต็มไปด้วยรักการกำหนดค่าที่เป็นกลุ่มบน GitHub

ไฮไลท์:

  • การเน้นไวยากรณ์, แท็บพื้นที่ 2 แท็บ, ขยายแท็บ
  • NERDtree มุมมองแบบต้นไม้ไฟล์คล้ายกับลิ้นชักโครงการของ TextMate
  • FuzzyFileFinderปลั๊กอินที่ใช้ในการทำงานของ cmd-T ของ TextMate
  • ธีมสีจำนวนมากที่มีค่าเริ่มต้นที่ดี (ทไวไลท์)

ฉันคิดว่ามันยอดเยี่ยมสำหรับการเขียนรหัส Ruby เนื่องจากเครื่องมือการจัดการระบบของเราเขียนด้วย Ruby


ฉันเพิ่งเล่นกับกลุ่มของสิ่งเหล่านี้และมีอีกมากที่จะตรวจสอบกับการตั้งค่า vim ที่คุณระบุไว้ แต่มันเหมาะกับความคาดหวังของฉันของค่าเริ่มต้นที่มีสติและคุณสมบัติที่มีประโยชน์ ไม่แน่ใจว่าวิกิชุมชนให้ฉันลงคะแนนในฐานะ 'ตอบ' แต่ยังไงก็ตาม ขอบคุณ!
Gareth

17

ขั้นแรกถ้าคุณมีมากกว่าเครื่องคู่ที่คุณทำงานด้วยพิจารณาวางของคุณ~/.vim/, ~/.vimrcและอื่น ๆ ที่มีประโยชน์ config ไฟล์ ( screenเปลือกของคุณ ฯลฯ ) ในระบบการควบคุมการแก้ไข ฉันชอบที่จะใช้darcs- มันราคาถูกในระบบ Debian (ไม่จำเป็นต้องติดตั้งคอมไพเลอร์ Haskell เพียงติดตั้งแพ็คเกจโดยตรง) กระจายและมีโหมดการโต้ตอบที่ยอดเยี่ยม ถ้าคุณรู้ / ชอบgitคุณสามารถยึดติดกับสิ่งนั้นได้

config ไฟล์ปัจจุบันของฉันที่มีอยู่ในพื้นที่เก็บข้อมูล Darcs http://repo.harnir.net/ของฉัน ตัวอย่างเฉพาะจากการ~/.vimrcติดตามของฉัน ขออภัยไม่มีลิงก์สำหรับสคริปต์ ฯลฯ เนื่องจากฉันเป็นผู้ใช้ใหม่ แต่ทุกอย่างที่คุณสามารถหาhttp://vim.org/ได้

สคริปต์ ViM ที่จำเป็นสำหรับ sysadmins

  • สคริปต์สำรองเป็นสิ่งจำเป็นเมื่อคุณแก้ไขไฟล์ระยะไกล ฉันใช้สคริปต์cbackup.vimซึ่งเก็บ 10 สำเนาล่าสุดของแต่ละไฟล์ที่แก้ไขในไดเรกทอรีกลางและลบไฟล์เก่าโดยอัตโนมัติ - เพียงแค่ใส่ใน~/.vim/plugins/ไดเรกทอรีของคุณและลืมมัน :-)

  • Tasklistช่วยให้คุณสามารถค้นหาได้อย่างรวดเร็วFIXME, XXXและTODOแท็กในไฟล์ปัจจุบันแสดงให้พวกเขาและไปที่แท็กที่มีเพียงหนึ่งกดปุ่ม หากคุณใช้แท็กเหล่านี้ให้ลองติดตั้งแท็กนี้

  • dbextเป็นสิ่งจำเป็นสำหรับ DBA ทั้งหมดและมีประโยชน์มากสำหรับโปรแกรมเมอร์ที่ทำงานกับฐานข้อมูล ให้คุณเรียกใช้คิวรีตรวจสอบโครงสร้างของฐานข้อมูลและอะไรก็ได้ มันเป็นหลักส่วนหน้าสำหรับเครื่องมือชอบmysql, sqlite3, sqlplusและอื่น ๆ ถ้าคุณทำงานกับฐานข้อมูลมันเป็นสิ่งที่ต้องทำ!

ไฟล์ไวยากรณ์

ฉันไม่ได้เห็นซินแท็กซ์ที่มีประโยชน์มากมายในไวลด์ส่วนใหญ่ sysadmins ที่ทำงานกับไฟล์นั้นจะถูกปรับแต่ง/etcและพวกมันมักจะถูกเน้นให้ดี ใน~/.vim/syntax/ปัจจุบันฉันมีไวยากรณ์ของสี CSSซึ่งยอดเยี่ยม (ดีสำหรับนักพัฒนาเว็บ) แต่ส่วนที่เหลือเขียนไม่ค่อยดีฉันอาจอัปเดตในเวลาว่าง ไฟล์ไวยากรณ์เพิ่มเติมที่ควรมีสำหรับ: dhcpd.conf , / etc / network / interfaces , ไฟล์กำหนดค่าnginxและlocal.cf ของSpamAssassin

เคล็ดลับที่มีประโยชน์พร้อมไวยากรณ์: หากไม่รู้จักไฟล์การกำหนดค่า (มีชื่อแปลก ๆ เช่น/etc/apache2/sites-enabled/some.domain.comคุณสามารถต่อท้ายชื่อนามสกุลที่ถูกต้อง (ในกรณีนี้.conf) หรือเพิ่ม ViM modeline ที่ส่วนท้าย:

# vim: filetype = apache

ตัวเลือกการกำหนดค่า ViM

ตัวเลือกการกำหนดค่าส่วนใหญ่ได้รับความนิยมอย่างมากเช่นset nocompatible rulerตัวเลือกอื่น ๆ ที่มีอยู่:

  • set gdefault: เข้าสู่gโหมดในs///g- /gโดยค่าเริ่มต้นจะใช้ตัวเลือกนั้นดังนั้นคุณไม่จำเป็นต้องเพิ่มทุกครั้ง - เพียงแค่เพิ่มเพื่อปิด

  • set incsearch ignorecase smartcase hlsearch: จำเป็นสำหรับการค้นหาผ่านไฟล์ - ส่วนเพิ่ม, แสดงรายการที่ตรงกันแบบเรียลไทม์, การค้นหาจะไม่สนใจตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ยกเว้นว่าคุณใช้ตัวอักษรตัวพิมพ์ใหญ่

  • set pastetoggle=<F6>: หรือปุ่มอื่น ๆ ที่คุณต้องการสลับระหว่างpasteและnopasteโหมดต้องเลือกคัดลอกบางอย่างจากหน้าเว็บเช่น ServerFault :-)

  • set noerrorbells visualbell t_vb=: กำจัดเสียงระฆังหรือระฆังที่น่ารำคาญทุกครั้งที่คุณทำอะไร)

ฟังก์ชั่นการแมปแป้นพิมพ์

  • วางชื่อผู้ใช้และวันที่ปัจจุบันลงในไฟล์ซึ่งมีประโยชน์หากคุณทำงานเป็นทีมและเพิ่มความคิดเห็นในไฟล์เกี่ยวกับผู้ที่เปลี่ยนแปลงบางอย่างเมื่อ เขียนเพียงและกดพื้นที่ก็จะมีการเปลี่ยนแปลงเพื่อสิ่งที่ต้องการxxsig harnir 20090531สำหรับการทำงานอย่างถูกต้องกับราก (เช่น. เขียนชื่อผู้ใช้ของคุณแทนroot) sudoคุณต้องเข้าสู่ระบบโดยใช้

    iabbrev xxsig <Esc>: r! [-n "$ SUDO_USER"] && echo "$ SUDO_USER` date '+ \% Y \% m \% d'\ "\ | \ | echo "$ USER` date '+ \% Y \% m \% d'` "<CR> ฉัน <BS> <Esc> A
    
  • แทรกความคิดเห็น "เส้น" เช่น# -- Some title -------------------{{{1ความยาว 78 ตัวอักษร - กด\com#ในโหมดปกติและมี คุณจะอยู่ในโหมดแทนที่โดยอัตโนมัติเพื่อให้คุณสามารถเพิ่มชื่อ:

    nmap \ com # O # <Esc>72A-<Esc>3A{<Esc>A1<Esc> <Home> 4 <Right> R <Space>
    

คุณสามารถปรับเปลี่ยนได้สำหรับระบบความคิดเห็นอื่น ๆ ( ", //ฯลฯ ) หรือเพียงแค่ตรวจสอบการตั้งค่าของฉันไฟล์

สิ้นสุดการสัมผัส

หากคุณมีไฟล์กำหนดค่าในระบบ RCS คุณอาจต้องการรวมตัวเลือกการกำหนดค่าเฉพาะสำหรับเครื่องบางเครื่อง เพื่อให้เป็นสิ่งที่ดีที่จะมี~/.vimrc.localไฟล์รวมอยู่โดยอัตโนมัติในตอนท้ายของการกำหนดค่า (ถ้าเป็นปัจจุบัน)

ถ้า filereadable (ขยาย ("~ / .vimrc.local"))
        source ~ / .vimrc.local
endif

เคล็ดลับสุดท้าย - ดีแม้ว่ามันอาจ - ไม่ทำงานเมื่อคุณมีโฮมไดเร็กตอรี่ที่ติดตั้ง NFS: ไม่ว่าคุณจะใช้เครื่องใดอยู่โฮมไดเร็กตอรี่ของคุณจะเหมือนเดิม. หมายเหตุด้วยเช่นกันเคล็ดลับนั้นขึ้นอยู่กับคำจำกัดความของ "~" - เชลล์บางตัวไม่รองรับการจดชวเลข
พ.ค.

ในฐานะผู้ดูแลระบบคุณอาจทำงานกับเซิร์ฟเวอร์ในบัญชี 'รูท' ซึ่งควรเป็นแบบโลคัลและไม่ได้เมาท์ผ่าน NFS ในกรณีนี้ /root/.vimrc.local ควรทำงานได้ดี
drybjed

6

ไม่แน่ใจจริงๆว่าส่วนใดของส่วนนี้เกี่ยวข้องกับการดูแลระบบเฉพาะ แต่สิ่งสำคัญของฉันคือ:

syntax on
set background=dark
set shiftwidth=2
set tabstop=2
if has("autocmd")
  filetype plugin indent on
endif
set showcmd             " Show (partial) command in status line.
set showmatch           " Show matching brackets.
set ignorecase          " Do case insensitive matching
set smartcase           " Do smart case matching
set incsearch           " Incremental search

ฉันยังเสมอให้แน่ใจว่าเครื่องที่มีการเข้าถึงไฟล์ไวยากรณ์ Nginx ไฮไลต์


ฉันเพียงแค่ใช้ถ้อยคำเท่านั้นที่จะแยกสิ่งที่อาจเป็นเฉพาะ 'การเขียนโปรแกรม' ที่เกี่ยวข้องกับ. vimrc ฉันควรเปลี่ยนคำถามที่คุณคิดว่า?
Gareth

ไม่ทิ้งเหมือนเดิมฉันแน่ใจว่าบางคนที่มีระบบดูแลระบบเกี่ยวข้องกับฉันไม่ใช่ฉัน
Adam Gibbins

โดยทั่วไปเห็นด้วยกับสิ่งนี้ ... แต่แท็บคือ 8 ช่องว่าง สิ่งอื่นใดและมันมีพฤติกรรมแตกต่างกันในกลุ่มที่เป็นกลุ่มแล้วในส่วนน้อย / หาง / แมว อาจเป็นหนึ่งในสิ่งที่ทางศาสนาเหล่านั้นแม้ว่า
Alexandre Carmel-Veilleux

4

หากคุณมักจะทำงานที่ผู้ใช้มากกว่านี้ทำให้ "ท่อ" ไฟล์ไปยัง sudo เพื่อให้สามารถบันทึก

cmap w!! %!sudo tee > /dev/null %

ใช้คำสั่ง:

:w!!

เพื่อเรียกใช้ sudo และบันทึกไฟล์


น่าสนใจ ทำไมคุณถึงใช้teeแทนcat?
David Schmitt

1
เพราะแมวจะไม่เขียนอะไรลงไฟล์ มันเพิ่งเขียนถึง stdout
Chris Jester-Young

cat -> ทำงานได้ดีเหมือนกัน
olle


2

ปลั๊กไร้ยางอาย นี่ไม่ใช่การเปลี่ยนแปลง. vimrc จริงๆ แต่เป็นการใช้ปลั๊กอิน VIM ฉันใช้ RCSVers กับ VIM ทุกเวอร์ชันที่ติดตั้ง โดยทั่วไปจะใช้คำสั่ง RCS เพื่อบันทึกเวอร์ชันของไฟล์ใด ๆ ที่คุณแก้ไข คุณไม่รู้กี่ครั้งที่ฉันเมาไฟล์การตั้งค่าเพื่อให้ RCSVers ช่วยฉันด้วยการแสดงการเปลี่ยนแปลงที่ฉันทำ

http://www.vim.org/scripts/script.php?script_id=563


2

อย่าใช้. vimrc เพื่อหลีกเลี่ยงการเรียนรู้ VIM

เนื่องจากฉันรู้ว่ามีผู้มาใหม่ VIM จำนวนมากที่จะอ่านสิ่งนี้คำแนะนำที่ดีที่สุดที่ฉันมีคือ: "อย่าขี้เกียจและใส่แผนที่ลงใน. vimrc ของคุณ" การเรียนรู้วิธีการที่ไม่ได้มาตรฐานในการทำสิ่งต่างๆใน VIM จะทำให้คุณรู้สึกเหมือน รวมขลิบด้ายเมื่อคุณไม่มี vimrc ของคุณ เส้นโค้งการเรียนรู้สำหรับ vi นั้นสูงชัน แต่คุณไม่ได้ทำสิ่งใดด้วยตนเองโดยเลือกที่จะไม่เรียนรู้


1
เป็นกลุ่มมีคุณสมบัติที่ดี ทำไมไม่ใช้มัน ?? เมื่อคุณต้องเปลี่ยนไปใช้ vi มันเป็นการชั่วคราว หากคุณคิดว่าคุณจะต้องทำงานอย่างหนักในกรณีที่ไม่ได้ติดตั้ง vim ไว้มันก็คุ้มค่าที่จะติดตั้ง
Luc M

0

อย่างน้อยส่วนหนึ่งของคำตอบของฉันก็เหมือนกับการเขียนโปรแกรมของฉัน. vimrc:

set hidden
map <TAB> :e#<CR>

map <F7> :set paste!<CR>
map <F8> :set hlsearch!<CR>
map <F9> :!co -l %<CR>:e<CR>
map <F10> :!rcsdiff %<CR>
map <F11> :!ci -u %<CR>:e<CR>

หากอย่างน้อยไฟล์บางไฟล์ที่คุณแก้ไขไม่ได้อยู่ใน RCS ควรเป็น! :)


0

ปิดใช้งานโหมดการเยื้อง "ฉลาด" ทั้งหมด ยอดเยี่ยมสำหรับการเขียนโปรแกรมเหมาะสำหรับไฟล์ปรับแต่ง


0

ฉันมักจะจบลงด้วยการใช้ strace เพื่อติดตามปัญหาแปลก ๆ ดังนั้นการพยายามเน้นไวยากรณ์ของบางบรรทัดสามารถทำให้ไร้สาระด้วยสตริงสตริงขนาดใหญ่ ในกรณีนี้ฉันใช้ set synmaxcol = 2048 เพื่อ จำกัด การเน้นไวยากรณ์ที่คอลัมน์ 2048

ฉันยังเป็นแฟนของปลั๊กอินรายการแท็กที่ใช้แท็กที่อุดมสมบูรณ์ จนถึงตอนนี้ฉันสามารถกด ctags ไบนารีที่คอมไพล์แล้วและยังไม่เจอปัญหาไลบรารีใด ๆ สิ่งนี้ช่วยให้ฉันสามารถนำทางระหว่างรหัสใด ๆ ที่ฉันทำงานด้วยได้อย่างรวดเร็ว โดยทั่วไปแล้วจะเป็น Perl, Python หรือ C

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