Setting up Vim : Part II

Published on

เคยเขียน Setting up Vim ตอนแรกไปแล้ว พอใช้งานไปเรื่อยๆ ผมว่ามีอะไรหลายๆ อย่างที่ปรับเปลี่ยนไปตามการใช้งาน เลยขอรวมรวม plugin/setup ที่เปลี่ยนไปจากตอนแรกมาดูครับ

ใช้งานบน OSX 10.10 เป็นหลัก เวอร์ชั่นอื่นอาจทำงานได้เหมือนกัน แต่ไม่รับประกันนะ

Pathogen → Vundle

ก่อนหน้านี้ผมใช้ Pathogen เป็นตัวจัดการ plugin ของ Vim ซึ่งปัญหาที่ผมตามมาก็คือ ตอนย้ายเครื่องไปทำงานที่เครื่องอื่น ย้าย plugin ที่ติดตั้งผ่าน Pathogen ไปด้วยยาก (Pathogen ใช้ git submodules ซึ่งไม่ค่อยสะดวกเท่าไหร่) (ความจริงคือผมไม่ค่อยเข้าใจ git submodule) ส่วนการจะ update plugin ก็ต้อง update ผ่าน submodules เช่นกัน .. เอาเป็นว่าผมแพ้ git submodules

เลยลองเปลี่ยนมาใช้ Vundle แทน Vundle ทำให้สามารถเก็บรายชื่อ plugin ไว้ในไฟล์ .vimrc ได้เลย จะเพิ่ม/ลบ/update plugin นั้นจะง่ายกว่า Pathogen มาก ทำได้ใน vim เลย

:PluginInstall
:PluginUpdate
:PluginClean

วิธีติดตั้งแบบละเอียด ดูได้จาก Quick start guide ของ Vundle ได้เลยครับ

ผมมี repo dotfiles ไว้เก็บ configuration ของโปรแกรมต่างๆ รวมถึง Vim ด้วย มีไฟล์ .vimrc กับโฟลเดอร์ .vim ทำให้แชร์ config ของ Vim ได้จากการทำ symlink มาที่ repo dotfiles

$ git clone https://github.com/armno/dotfiles.git ~/dotfiles
$ ln -s ~/dotfiles/.vimrc ~/.vimrc
$ ln -s ~/dotfiles/.vim ~/.vim

เวลาอัพเดท config ใน .vimrc ก็สามารถ push ไปที่ repo dotfiles เพื่ออัพเดท vim config ในเครื่องอื่นๆ ได้ด้วย

CtrlP + The Silver Searcher

CtrlP เป็น plugin ของ vim ที่ทำงานได้คล้ายกับ cmd+p (หรือ cmd+t) ใน Sublime Text ใช้เพื่อเปิดไฟล์ในโปรเจ็ค หรือจาก buffer ที่กำลังใช้อยู่ ผ่าน fuzzy search จาก path ได้ (พิมพ์แค่บางส่วนของ path) ใช้ CtrlP นั้นทำให้หา และเปิดไฟล์ได้เร็วกว่า file explorer (NERDTree) ได้เยอะเลย

vim ctrlp

แต่ fuzzy search ที่ติดมากับ CtrlP นั้น บางทีก็ช้าอยู่บ้างกับโปรเจ็คใหญ่ๆ โชคดีที่ CtrlP เราสามารถใช้ “custom command” ในการ search หาไฟล์ได้ ผมใช้ The Silver Searcher ซึ่งเร็วกว่าพอสมควร

# ในไฟล์ .vimrc
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'

แทนที่ Powerline ด้วย Vim-airline

vim-airline เป็น plugin ที่เราเซ็ต status bar แบบฉูดฉาดเหมือน powerline ได้ แต่โหลดเร็วกว่า (และไม่ต้องลง python ด้วย) แถมยังทำงานร่วมกับ plugin ตัวอื่นๆ ของ vim ได้ดีอีกด้วย

vim airline

นอกจากนี้ก็เป็น plugin อื่นๆ ที่เกี่ยวกับแต่ละภาษาที่เขียน list เต็มๆ ของผมอยู่ในไฟล์ .vimrc ครับ

ปล. ทุกวันนี้ก็ยังใช้ vim กับ sublime text สลับกันไปมา แล้วแต่ลักษณะงานครับ

Share

(Edit on GitHub)