Thursday, March 27, 2014

Vim Tip: search แบบ '*' ด้วย '/'

flow การทำงานใน vim หลังจากเปิด file ขึ้นมา ปกติจะตามด้วยการ search หาตำแหน่งที่ต้องการแก้ไขด้วยคำสั่ง / ตามด้วยบางส่วนของคำ ซึ่งมักจะเจอคำที่ไม่เกี่ยวข้อง

มี search อีกแบบที่เหมาะกับการเขียนโปรแกรมคือ เมื่อ cursor อยู่บนคำที่ต้องการค้น สามารถใช้ * ค้นคำนั้นแบบเต็มคำได้เลย เหมาะกับค้นหาการใช้งานของ ฟังก์ชันหรือตัวแปร

แต่ถ้าเราเปิด file ขึ้นมาแล้วรู้ชื่อตัวแปรหรือฟังก์ชันที่ต้องการแก้ เราจะต้องใช้คำสั่ง /\<config\> เพื่อที่จะหาคำว่า config แบบเต็มคำ คำสั่งนี้จะทำงานเหมือน * แต่ cursor จะอยู่ที่ไหนก็ได้

การพิมพ์ \<\> นั้นยุ่งยากพอสมควร แต่เราสามารถ map key ให้เติม \<\> ได้ง่ายๆด้วย

cnoremap <C-w> <Home>\<<End>\><CR>

วิธีใช้คือ search ปกติด้วย / เช่น

/config

แทนที่จะกด enter ให้ ใช้ ^w แทน ซึ่ง mapping นี้จะทำงานตามลำดับดังนี้

  1. กระโดยไปที่ตำแหน่งหน้าสุด (Home key)
  2. พิมพ์ \<
  3. กระโดดไปที่ตำแหน่งหลังสุด (End key)
  4. พิมพ์ \>
  5. พิมพ์ enter (CR)

ในที่นี้ map ด้วย key ^w ตั้งใจให้หมายถึง word แต่จะ map ด้วย key อะไรก็แล้วแต่ถนัดครับ

No comments:

Post a Comment