หลายคนรวมทั้งตัวผู้เขียนเอง ใช้ vim ในการแก้ไขไฟล์ต่างๆ ในลีนุกซ์ แล้วก็ใช้ vim ในการพัฒนาหรือเขียนโปรแกรมใช้งานด้วย
คุณสมบัติหนึ่งของ editor ที่ช่วยให้โปรแกรมเมอร์สามารถเขียนโปรแกรมได้ง่ายขึ้น หรือหาจุดผิดพลาดในโปรแกรมได้เร็วมากขึ้น คือมีการไฮไลต์สีของโค้ดโปรแกรมที่เขียน (syntax highlight)
ใน vim ก็มีคุณสมบัตินี้เหมือนกัน เพียงแต่ดีฟอลต์อาจไม่ได้เปิดการใช้งานไว้ ลองมาดูวิธีการเปิดการใช้งานกันครับ
บนลีนุกซ์ตระกูล CentOS หรือ Red Hat หากต้องการให้ vim มีการไฮไลต์สี ต้องติดตั้งแพ็กเกจ vim-enhanced
ตอนติดตั้ง CentOS หากเลือกแบบ Minimal หรือยังไม่ได้ติดตั้งแพ็กเกจนี้ไว้ ต้องใช้คำสั่ง yum install เพื่อติดตั้งแพ็กเกจเพิ่มเติม
[root@cent7 ~]# yum install vim-enhanced
หลังติดตั้งเสร็จ ลองล็อกอินด้วยผู้ใช้ธรรมดา แล้วพิมพ์คำสั่ง vi เปิดไฟล์
ตัวอย่างการใช้ vi เปิดไฟล์ html
[alice@cent7 ~]$ vi index.html
ที่จริงคำสั่ง vi ที่ผู้ใช้พิมพ์นี้ เป็นการเรียกคำสั่ง vim อีกที โดยการใช้คุณสมบัติ alias ของ shell
ลองใช้คำสั่ง alias ตามด้วยชื่อคำสั่งที่พิมพ์ เพื่อดูคำสั่งที่เรียกใช้จริงๆ
[alice@cent7 ~]$ alias vi alias vi='vim'
แต่ถ้าลองล็อกอินด้วย root ใช้คำสั่ง vi เปิดไฟล์เดียวกัน กลับไม่มีสี
[root@cent7 ~]# vi index.html
เป็นเพราะว่า ดีฟอลต์จากการติดตั้งแพ็กเกจ vim-enhanced ไม่มีการเซต alias vi สำหรับ root ไว้ ดังนั้นจะเป็นการเรียกคำสั่ง vi ตรงๆ ที่ไม่มีคุณสมบัติในการไฮไลต์สี
[root@cent7 ~]# alias vi
-bash: alias: vi: not found
หากไล่ดูปัญหาโดยละเอียด จากการดิดตั้ง vim-enhanced จะมีไฟล์สคริปต์ /etc/profile.d/vim.sh ที่มีการตรวจสอบว่า ถ้าผู้ใช้ที่ล็อกอินมี id ต่ำกว่า 200 จะไม่มีการทำ alias สำหรับคำสั่ง vi
ซึ่ง root มี id เท่ากับ 0
[root@cent7 ~]# cat /etc/profile.d/vim.sh if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then [ -x /usr/bin/id ] || return ID=`/usr/bin/id -u` [ -n "$ID" -a "$ID" -le 200 ] && return # for bash and zsh, only if no alias is already set alias vi >/dev/null 2>&1 || alias vi=vim fi [root@cent7 ~]# id -u 0
ส่วนเหตุผลว่าทำไมถึงเป็นแบบนี้ ลองอ่านลิงก์ Bug 168010 – /etc/profile.d/vim.sh don’t applies to root user
ดังนั้น ถ้าต้องการให้ล็อกอินด้วย root แล้วให้มีการไฮไลต์สีเวลาเรียกใช้ด้วย ก็อาจพิมพ์คำสั่ง vim ตรงๆ หรือเพิ่มการ alias vi ในไฟล์ .bash_profile ซึ่งจะถูกรันทุกครั้งเมื่อมีการล็อกอิน
ตัวอย่างการเพิ่ม alias vi ต่อท้ายในไฟล์ .bash_profile ใน home ของ root
[root@cent7 ~]# pwd
/root
[root@cent7 ~]# vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
alias vi='vim'
แล้วลองล็อกอินด้วย root ใหม่อีกครั้ง จะมีการเซต alias ให้
[root@cent7 ~]# alias vi alias vi='vim'
นอกจาก vim-enhanced จะสามารถไฮไลต์สี ไฟล์โปรแกรมภาษาต่างๆ ได้แล้ว ยังสามารถไฮไลต์สีไฟล์คอนฟิกของเซิร์ฟเวอร์หรือเซอร์วิสต่างๆ เพื่อช่วยให้ผู้ดูแลระบบดูหรือแก้ไขไฟล์คอนฟิกได้ง่ายขึ้นด้วย
ตัวอย่างการใช้ vi เปิดไฟล์คอนฟิก /etc/httpd/conf/httpd.conf ซึ่งเป็นไฟล์คอนฟิกหลังของเว็บเซิร์ฟเวอร์ Apache
[root@cent7 ~]# vi /etc/httpd/conf/httpd.conf
สังเกตดูว่าถ้าเราพิมพ์ออปชัน เช่นสะกด Directory ผิดไป จะมีการเปลี่ยนสี
นอกเหนือจากนี้ การติดตั้งแพ็กเกจ vim-enhanced ยังทำให้ vi หรือ vim มีคุณสมบัติอื่นเพิ่มขึ้น ที่น่าใช้และมีประโยขน์อีกมากมาย ไว้จะกล่าวถึงเรื่อยๆ ดังนั้นแนะนำให้ติดตั้งแพ็กเกจนี้ครับ
หมายเหตุ ในลีนุกซ์หรือยูนิกซ์อื่นๆ อาจต้องพิมพ์คำสั่ง :syntax on ใน vim เพิ่มเติม หากไม่ได้เซตไว้ เพื่อเปิดการไฮไลต์สี
ข้อมูลอ้างอิง
- หัดใช้ vi แก้ไขไฟล์บนลีนุกซ์
- เปลี่ยนแปลงข้อความที่ต้องการใน vim
- Bug 168010 – /etc/profile.d/vim.sh don’t applies to root user