Indent

ลูกเล่นเล็กๆ น้อยๆ สำหรับคนใช้ vi เขียนโปรแกรมครับ

โดยปรกติ เวลาแก้ไขไฟล์ vi จะ auto-indent ให้อยู่แล้ว (สำหรับไฟล์ code ที่โปรแกรมรู้จัก) ถ้าต้องการ indent เอง ใช้ [<] หรือ [>] แล้วตามด้วย suffix เพื่อ indent เพิ่ม/ลดระดับความลึก code ของเรา

#include <stdio.h>

int main(void) {
    int i;
    for(i=0; i<5; i++) {
    printf("%d", i);          // press [>] [j] in this line
    printf("---");
    }
        return 0;             // press [<] [<] in this line
}

// will result

#include <stdio.h>

int main(void) {
    int i;
    for(i=0; i<5; i++) {
        printf("%d", i);
        printf("---");
    }
    return 0;
}

แต่ถ้าอยู่ใน insert mode การกด [Esc] บ่อยๆ เพื่อออกมาใช้คำสั่งเหล่านี้คงไม่เข้าท่าเท่าไหร่ ตรงนี้เราสามารถใช้ [Tab] (หรือ [Ctrl]+[t]) กับ [Ctrl]+[d] เพื่อเพิ่ม/ลดระดับความลึกของการ indent ได้ครับ

# suppose now in --insert mode--
def funny():                 # press [Enter] to auto-indent.
    if input() != '':        # [Enter] for another +indent.
        print('something')   # [Enter] now give same indent.
        print('detected')    # to -indent depth:
        print('but lost')    # press [Enter] and [Ctrl]+[d].
    print('just kidding')

นอกจากนี้ เรายังสามารถใช้ [=] ตามด้วย suffix เพื่อสั่ง auto-indent code ที่ indent มั่วๆ ได้อีกด้วย

    #include <stdio.h>

int main(void) {
  int i;
 for(i=0; i<5; i++) {
     printf("%d", i);
   if(i>3) {
  break;
     }
 }
       return 0;
}

// cursor at the 1st line
// press [=] [G]

#include <stdio.h>

int main(void) {
    int i;
    for(i=0; i<5; i++) {
        printf("%d", i);
        if(i>3) {
            break;
        }
    }
    return 0;
}

หมายเหตุว่าบางภาษาก็ไม่รองรับความสามารถนี้ เช่น Python ที่ต้อง indent เองครับ


ส่วนการเปลี่ยน case ของอักษรภาษาอังกฤษ ทำได้โดย [~]

public static void main(string[] args)
//                      ^ press [~]

public static void main(String[] args)

Nattawut Phetmak

Jack of all Trades

blog comments powered by Disqus