👤
Novice Handbook
  • Novice Handbook
  • Guide
  • Internet และ Web
    • HTML
  • Computer Language
    • Basic Computer Language (LV.1)
    • C Language (LV.1)
    • Python3 (LV.1)
  • Operating System
    • Linux
      • Basic Linux (LV.1)
  • TOOLS
    • Text Editor
      • Vim Editor
    • Source Control
      • GitLab
        • GitLab for small site (LV.1)
    • Container
      • Docker
        • Docker (LV.1)
        • Docker (LV.2)
      • Kubernetes
        • Kubernetes Intro (LV.0)
        • Kubernetes Basic (LV.1)
        • Kubernetes Intermediate (LV.2)
        • Helm (LV.2)
        • RKE2 (LV.3)
        • K3S (LV.3)
        • K3D (LV.3)
    • Repository
      • Harbor
        • Harbor for small site (LV.1)
        • Harbor for enterprise (LV.2)
    • Database
      • Redis
        • Redis on Docker Compose (LV.1)
        • Redis on Kubernetes (LV.2)
      • Elastic Stack
        • Elasticsearch & Kibana for small site (LV.1)
    • Observability
      • Prometheus
        • Prometheus for small site (LV.1)
        • Prometheus Operator (LV.2)
    • Security
      • Certbot (LV.1)
      • Falco
      • Hashicorp Vault
    • Collaboration
      • Nextcloud
Powered by GitBook
On this page
  • Vim คืออะไร
  • การเข้าสู่ Vim Editor
  • Mode ของ Vim
  • การสลับ mode
  • การออกจาก Vim Editor
  • การเลื่อน Cursor ใน Vim Editor
  • Command อื่นๆที่สำคัญใน Vim
  • การ Search ใน Vim
  • การแทนที่ pattern ใน Vim
  • Advance Command

Was this helpful?

  1. TOOLS
  2. Text Editor

Vim Editor

Vim คืออะไร

Vim (Vi IMproved) เป็น Open Source ซึ่งพัฒนาโดยอ้างอิงมาจาก Vi Editor Vim เป็น text editor ที่นิยมบน OS ตระกูล Unix แต่ใช้ learning curve ที่สูงกว่าการใช้ text editor อื่นๆ

การเข้าสู่ Vim Editor

ทำได้โดยใช้คำสั่ง vim ตามด้วยชื่อไฟล์ เช่น

vim foo

จะทำการเปิดไฟล์ชื่อ foo หากไฟล์ไม่มีอยู่ จะทำการสร้างไฟล์ (เมื่อทำการสั่งบันทึก)

Mode ของ Vim

vim ประกอบด้วย 2 mode หลักๆ คือ Command mode และ Insert mode

Command mode

เป็น mode ที่ใช้ในการพิมพ์คำสั่งต่างๆ

Insert mode

เป็น mode ที่ใช้ในการพิมพ์ข้อความ

เมื่อเข้าสู่ Vim Editor จะอยู่ใน Command mode

การสลับ mode

ใช้ ESC เพื่อเปลี่ยนจาก Insert mode กลับไปยัง Command mode

ในกรณีต้องการเปลี่ยนจาก Command mode เข้าสู่ Insert mode จะสามารถทำได้หลายวิธี เช่น

Command
Effect

i

เปลี่ยนเข้าสู่ Insert mode โดยแทรก cursor ที่ข้างหน้าตำแหน่งปัจจุบัน

a

เปลี่ยนเข้าสู่ Insert mode โดยแทรก cursor ที่ตำแหน่งถัดจากตำแหน่งปัจจุบัน

I

เปลี่ยนเข้าสู่ Insert mode โดยแทรก cursor ที่ต้นบรรทัด

A

เปลี่ยนเข้าสู่ Insert mode โดยแทรก cursor ที่ท้ายบรรทัด

การออกจาก Vim Editor

พิมพ์คำสั่งเมื่ออยู่ใน command mode

Command
Effect

:q

ออกจาก Editor

:q!

ออกจาก Editor โดยไม่บันทึกการเปลี่ยนแปลง

:wq

บันทึกการเปลี่ยนแปลง และออกจาก Editor

การเลื่อน Cursor ใน Vim Editor

พิมพ์คำสั่งเมื่ออยู่ใน command mode

Command
Effect

h

เลื่อน cursor ไปทางซ้าย

j

เลื่อน cursor ขึ้น

k

เลื่อน cursor ลง

l

เลื่อน cursor ไปทางขวา

0

เลื่อน cursor ไปต้นบรรทัด

$

เลื่อน cursor ไปท้ายบรรทัด

1G

เลื่อน cursor ไปบรรทัดแรกสุดของไฟล์

G

เลื่อน cursor ไปบรรทัดท้ายสุดของไฟล์

:100

jump ไปที่บรรทัดหมายเลข 100

w

เลื่อน cursor ไป word ถัดไป

b

เลื่อน cursor ไป word ก่อนหน้า

H

เลื่อนไปบรรทัดแรกสุดของ screen

M

เลื่อนไปบรรทัดกลางของ screen

L

เลื่อนไปบรรทัดท้ายสุดของ screen

Command อื่นๆที่สำคัญใน Vim

Command
Effect

:set nu

แสดงเลขบรรทัด

:set nonu

ไม่แสดงเลขบรรทัด

x

ลบอักษรที่ตำแหน่ง cursor อยู่

r

แทนที่อักษร ณ ตำแหน่งที่ cursor อยู่ด้วยอักษรอื่น

u

ย้อนกลับสิ่งที่แก้ไขไป

dd

ลบทั้งบรรทัดที่ cursor อยู่

d3d

ลบจากตำแหน่งที่ cursor อยู่ไป 3 บรรทัด

yy

copy บรรทัดที่ cursor อยู่

y3y

copy 3 บรรทัดนับตั้งแต่บรรทัดที่ cursor อยู่

p

paste สิ่งที่ copy หรือ delete มา ต่อท้าย cursor

P

paste สิ่งที่ copy หรือ delete มา ข้างหน้าตำแหน่ง cursor

dw

ลบตั้งแต่ตำแหน่ง cursor จนจบ word

d^

ลบตั้งแต่ตำแหน่ง cursor จนถึงต้นบรรทัด

d$

ลบตั้งแต่ตำแหน่ง cursor จนถึงท้ายบรรทัด

การ Search ใน Vim

Command
Effect

/foo

search หาคำว่า foo ใช้ n เพื่อเลื่อนหาตัวถัดไป ใช้ N เพื่อเลื่อนกลับไปหาตำแหน่งก่อนหน้า

การแทนที่ pattern ใน Vim

Command
Effect

:%s/foo/bar/

search หาคำว่า foo และทำการเปลี่ยนเป็น bar ทุกบรรทัด โดยมีผลกับ pattern แรกที่เจอในแต่ละบรรทัดเท่านั้น

:%s/foo/bar/g

search หาคำว่า foo และทำการเปลี่ยนเป็น bar ทุกบรรทัด โดยมีผลกับ pattern ที่เจอทั้งหมดในแต่ละบรรทัด เช่นถ้าบรรทัดใดมีซ้ำกัน ก็แทนที่ทุกจุดที่ซ้ำ

:2,5s/foo/bar/

search หาตั้งแต่บรรทัดที่ 2 ถึง5 หากเจอ foo ให้ทำการเปลี่ยนเป็น bar โดยมีผลกับ pattern แรกที่เจอในแต่ละบรรทัดเท่านั้น

:2,5s/foo/bar/g

search หาตั้งแต่บรรทัดที่ 2 ถึง5 หากเจอ foo ให้ทำการเปลี่ยนเป็น bar โดยมีผลกับ pattern ที่เจอทั้งหมดในแต่ละบรรทัด

Advance Command

Command
Effect

:!ls

สั่ง command ls

:sh หรือ :!bash

เข้าสู่ sub shell ออกจาก sub shell ด้วย Ctrl+D

:f newfile

เปลี่ยนชื่อไฟล์ที่จะเซฟด้วย :w เป็น newfile

:w otherfile

บันทึกการเปลี่ยนแปลงลงไฟล์ otherfile แต่หากมีการเปลี่ยนแปลงหลังจากนั้น แล้วบันทึกด้วย command :w การเปลี่ยนแปลงนั้นจะเกิดกับไฟล์หลัก ไม่ใช่ otherfile

:e otherfile

เปิดไฟล์ otherfile ขึ้นมาแก้ไข

:e #

สลับระหว่างไฟล์ที่เปิดอยู่

:cd /home

ไปยัง directory /home

อย่าให้สิทธิ์ sudo vi แก่ user ทั่วไปเด็ดขาด เพราะจะเป็นการเปิด backdoor ให้ user สามารถรันเข้า shell เป็น root ได้ด้วย :sh

ถ้าต้องการให้ user เข้าไปแก้ไขไฟล์ด้วยสิทธิ์อื่นได้ ควรใช้ sudoedit แทน

PreviousText EditorNextSource Control

Last updated 10 months ago

Was this helpful?