Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ตั้งค่า Vim เป็น Default Editor ใน Linux: คู่มือทีละขั้นตอน

ผมใช้ Linux มาประมาณ 25 ปี และ Unix อีกไม่กี่ปีก่อนหน้านั้น ระหว่างนั้น ผมได้พัฒนาความชอบในเครื่องมือบางอย่างที่ใช้ทุกวัน เครื่องมือที่สำคัญที่สุดที่ผมใช้คือ editor Vim

ผมเริ่มใช้ Vi ตอนเรียน Solaris ในช่วงต้นทศวรรษ 1990 เพราะถูกบอกว่ามันจะมีอยู่บนระบบใดๆ เสมอ ซึ่งเป็นจริงในประสบการณ์ของผม ผมลอง editor อื่นๆ ทุกตัวก็ทำงานได้ แต่ผมรู้สึกว่า Vim เหมาะกับผมที่สุด และผมใช้บ่อยมากจน muscle memory ของ Vim ทำให้ผมพยายามใช้ keystrokes ของมันแม้กับ editor อื่นๆ

เพิ่มเติม ผมแค่ชอบ Vim จริงๆ

ไฟล์การกำหนดค่าหลายอย่างใช้ Vi แทน Vim และคุณสามารถรันคำสั่ง vi ได้ อย่างไรก็ตาม คำสั่ง vi เป็นลิงก์ไปยัง vim

เครื่องมือ Linux หลายอย่างใช้ editor ที่เลียนแบบหรือเพียงเรียก Nano, Emacs, หรือ Vim เครื่องมืออื่นๆ อนุญาตให้ผู้ใช้ – เช่นคนที่มีความชอบชัดเจน – ลิงก์ไปยัง editor ที่ชอบ สองตัวอย่างที่ส่งผลต่อผมมากที่สุดคือ การแก้ไขบรรทัดคำสั่ง Bash ซึ่งค่าเริ่มต้นเป็น Emacs และไคลเอนต์อีเมล text-mode Alpine ซึ่งค่าเริ่มต้นเป็น editor Pico จริงๆ แล้ว editor Pico ถูกเขียนขึ้นโดยเฉพาะสำหรับใช้ในไคลเอนต์อีเมล Pine ซึ่งเป็นผู้มาก่อนของ Alpine

ไม่ใช่ทุกโปรแกรมที่ใช้ external editors สามารถกำหนดค่าได้ บางอย่างใช้แค่ editor ที่ผู้พัฒนาระบุ สำหรับแอปพลิเคชันที่กำหนดค่าได้ มีวิธีต่างๆ ในการเลือก editor ที่ต้องการ

การแก้ไขบรรทัดคำสั่ง Linux

นอกจากการแก้ไขไฟล์ข้อความจริงๆ แล้ว เครื่องมืออีกอย่างที่ผมใช้ซึ่งต้องการการแก้ไขมากที่สุดคือ Bash shell ค่าเริ่มต้นของ Bash editor คือ Emacs แม้ผมจะเคยใช้ Emacs แต่ผมชอบ Vim มากกว่าอย่างชัดเจน ดังนั้นหลายปีก่อน ผมเปลี่ยนสไตล์การแก้ไขเริ่มต้นสำหรับการแก้ไขบรรทัดคำสั่ง Bash จาก Emacs เป็น Vim ซึ่งสะดวกกว่าสำหรับผมมาก

มีสองวิธีในการกำหนดค่า Bash คุณสามารถใช้ไฟล์การกำหนดค่าท้องถิ่น (local configuration file) เช่น /home/yourhomedirectory/.bashrc ซึ่งเปลี่ยนค่าเริ่มต้นเฉพาะบัญชีผู้ใช้ของคุณ ไม่ใช่ผู้ใช้อื่นบนระบบเดียวกัน ผมชอบทำการเปลี่ยนแปลงแบบนี้ให้เป็น global ซึ่ง基本上หมายถึงบัญชีส่วนตัวของผมและ root ในกรณีนี้ คุณสามารถสร้างไฟล์กำหนดค่าของตัวเองและวางไว้ในไดเรกทอรี /etc/profile.d

ผมเพิ่มไฟล์ชื่อ myBashConfig.sh ไปที่ /etc/profile.d มีไฟล์สำหรับ shells ที่ติดตั้งทั้งหมดในไดเรกทอรี /etc/profile.d ระหว่างการเปิดเซสชันเทอร์มินัล แต่ละ shell จะอ่านเฉพาะไฟล์ที่ตั้งใจไว้สำหรับมันโดยอิงจาก副檔名ของไฟล์ ตัวอย่างเช่น Bash shell จะอ่านเฉพาะไฟล์ที่มี .sh extension

<SNIP>
 alias vim='vim -c "colorscheme desert" '
 # Set vi for bash editing mode
 set -o vi
 # Set vi as the default editor for all apps that check this
 EDITOR=vi
 <SNIP>

บรรทัด set -o vi ในชุดคำสั่งไฟล์การกำหนดค่า Bash แบบ global นี้ ตั้งค่า Vi เป็น editor เริ่มต้น ตัวเลือก -o บนคำสั่ง set นี้ กำหนด vi เป็น editor คุณต้องปิดเซสชัน Bash ที่ทำงานอยู่ทั้งหมดและเปิดใหม่เพื่อให้มีผล

ในจุดนี้ คุณสามารถใช้คำสั่งแก้ไข Vim ที่คุ้นเคยทั้งหมด รวมถึงการเคลื่อนที่เคอร์เซอร์ เพียงกดปุ่ม Escape เพื่อเข้าสู่โหมดแก้ไข Vim ผมชอบความสามารถในการใช้ b หลายครั้งเพื่อเลื่อนเคอร์เซอร์ถอยหลังหลายคำ

ตั้งค่า Vim เป็นค่าเริ่มต้นสำหรับโปรแกรมอื่นๆ

เครื่องมือและโปรแกรมบรรทัดคำสั่ง Linux บางอย่าง ตรวจสอบตัวแปรสภาพแวดล้อม $EDITOR เพื่อตัดสินใจว่าจะใช้ editor ไหน คุณสามารถตรวจสอบค่าปัจจุบันของตัวแปรนี้ด้วยตัวเองได้โดยใช้คำสั่งต่อไปนี้ ผมทำบนหนึ่งใน virtual machines ที่เพิ่งติดตั้งใหม่ เพื่อตรวจสอบว่าค่าเริ่มต้นจริงคืออะไร

# echo $EDITOR
 /usr/bin/nano
 #

โดยค่าเริ่มต้น โปรแกรมของ Fedora ที่ตรวจสอบตัวแปรสภาพแวดล้อม $EDITOR จะใช้ editor Nano การเพิ่มบรรทัด EDITOR=vi ตามที่แสดงใน snippet ข้างต้น ไปยัง myBashConfig.sh จะเปลี่ยนค่าเริ่มต้นเป็น editor Vi (Vim) ไม่ใช่ทุกโปรแกรมบรรทัดคำสั่งที่ใช้ external editor ตรวจสอบตัวแปรสภาพแวดล้อมนี้

แก้ไขอีเมลใน Alpine

ไม่กี่สัปดาห์ก่อน ผมตัดสินใจว่า Pico ไม่ได้ทำงานดีสำหรับผมในฐานะ email editor ผมสามารถทำให้มันทำงานได้ และทำเป็นเวลาหลังจากเปลี่ยนจาก Thunderbird มาเป็น Alpine ผมพบว่า Pico กำลังขวางทางผมเมื่อพยายามใช้ลำดับคีย์ของ Vim ส่งผลต่อประสิทธิภาพ

ผมอ่านใน Alpine Help ว่าสามารถเปลี่ยน editor เริ่มต้นได้ ผมตัดสินใจเปลี่ยนเป็น Vim นี่ทำได้จริงๆ อย่างง่าย

บนเมนูหลักของ Alpine กดปุ่ม S เพื่อเข้าสู่ setup แล้ว C สำหรับ configuration ในส่วน Composer Preferences เลือก Enable Alternate Editor Command และ Enable Alternate Editor Implicitly ด้วย X หลายหน้าลงไปในส่วน Advanced User Preferences หาบรรทัด Editor ควรจะเห็นอย่างนี้หากยังไม่เปลี่ยน:

Editor = <No Value Set>

Highlight บรรทัด Editor นี้ด้วยแถบเคอร์เซอร์ และกด Enter เพื่อแก้ไขบรรทัด เปลี่ยน <No Value Set> เป็น vim กด Enter แล้วกด E เพื่อออก และ Y เพื่อบันทึกการเปลี่ยนแปลงที่ทำ

เพื่อแก้ไขข้อความอีเมลด้วย Vim ให้เพียงใส่เนื้อหาอีเมล และ Vim จะเริ่มอัตโนมัติ เหมือน Pico ทุกความสามารถการแก้ไขที่ผมชอบอยู่ที่นั่น เพราะมันใช้ Vim จริงๆ แม้ลำดับ Esc :wq เพื่อออกจาก Vim ก็เหมือนเดิม

ข้อคิดสุดท้าย

ผมชอบ Vim มากกว่า editor อื่นๆ และการเปลี่ยนแปลงเหล่านี้บนระบบของผมทำให้มันพร้อมใช้งานเป็นค่าเริ่มต้นในโปรแกรมที่ใช้ editor อื่นโดยค่าเริ่มต้น บางโปรแกรมใช้ตัวแปรสภาพแวดล้อม $EDITOR ดังนั้นคุณต้องทำการเปลี่ยนแปลงนั้นเพียงครั้งเดียว โปรแกรมอื่นๆ เช่น Alpine มีตัวเลือกการกำหนดค่าผู้ใช้ที่คุณต้องตั้งค่าแยกต่างหากสำหรับแต่ละโปรแกรม

ความสามารถในการเลือก external editor ที่ต้องการนี้ สอดคล้องกับหลักปรัชญา Unix "Each program should do one thing and do it well" ทำไมต้องเขียน editor อีกตัวเมื่อมี editor ที่ดีหลายตัวอยู่แล้ว? และยังสอดคล้องกับหลักปรัชญา Linux "Use your favorite editor"

當然 คุณสามารถเปลี่ยน default text-mode editor ของคุณเป็น Nano, Pico, EMACS หรือตัวอื่นที่คุณชอบ