มีคำถามมากมาย แต่ไม่รู้จะถามใคร ได้โอกาสถามคนแถวนี้
ผมพยายามมาตั้งแต่สมัยเมื่อสิบปีก่อน ผ่านมาสิบปีก็ยังใช้ vi เหมือนเดิม ไม่เคยรอดเกิน 2 วันเลยครับ ตอน btd1 กลับมาก็ลง ใช้ไม่รอดวัน btd2 กลับมาลองอีกรอบ คราวนี้ได้แค่ครึ่งวันเอง
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
บน edgy ผมลงไว้อยุ่ 2 ตัว คือ gtk กับ emacs23
(ตัว emacs23 ต้อง compile จาก source code เอง)
ปุ่ม short-cut ในการสลับภาษาคือ ctrl-\
ซึ่งในการกดครั้งแรก มันจะถาม input-method ก่อน
ซึ่งเราจะตอบว่า thai-kesmanee (พิมพ์แค่บางส่วนแล้วกด tab เพื่อให้มัน autocomplete ก็ได้)
ที่ปุ่มสลัดภาษามันใช้คนละตัวกับ os ก็เพราะว่า
มันจะได้จัดการกับ short-cut อื่นๆได้ถูกต้อง
แม้ว่าจะอยู่ระหว่างการเลือกใช้ภาษานั้น
เช่นใช้ภาษาไทยอยู่ แต่ผมก็ยังกด ctrl-a ได้ (ไม่กลายเป็น ctrl-ฟ)
พิมพ์ไทยได้แล้ว แต่บางทีก็แสดงผลไม่ถูก
อันนี้ให้เลือก font
โดยเลือก menu options -> set font -> misc - 7x13
แต่ละเครื่องคงไม่เหมือนกัน ลองดูครับ
(emacs gtk ของผมมีปัญหาเรื่อง font thai ผมก็เลยใช้ emacs23)
เรื่อง font นี่ คุณ poonlap แกเขียนไว้เยอะเหมือนกัน ต้องไปลองค้นดูครับ
key พื้นฐาน
1. เปิด file ctrl-x ctrl-f
2. ปิด file ctrl-x k
3. save file ctrl-x ctrl-s
4. help
4.1 ต้องการดู tutorial F1 ตามด้วย t หรือ ctrl-h t
4.2 ดูว่า key binding มีอะไรบ้าง F1 b
4.3 สงสัยว่า key นี้กดแล้วได้อะไร F1 k แล้วตามด้วยการ short-cut ที่ต้องการ
4.4 สงสัยว่า function นี้คืออะไร กด F1 f ตามด้วยชื่อ function
5. กด short-cut ผิดไว้ครึ่งๆกลาง แล้วต้องการยกเลิก
พยายามกด ESC เข้าไว้ (สูงสุดคือ 3 ที)
6. alt-x กดเพื่อเรียก function โดยการพิมพ์ชื่อ function เอง (แทนที่จะใช้ short-cut)
เล่นตาม tutorial ดีที่สุดครับ
ถ้าเลือก options->mule->language environment->thai
หรือ locales เป็น ไทย
tutorial ก็จะเป็นภาษาไทยด้วย
ตัว mode
โดยปกติ มันจะมีจุด hook ให้ config ว่า
ถ้าเปิด file นามสกุลนี้ ให้ใช้ mode นี้
แต่ในกรณีที่ไม่ได้ใส่ hook ไว้
เราสามารถเลือก mode ได้โดยกด alt-x ตามด้วยชื่อ mode
เช่น ruby-mode, haskell-mode, python-mode
เรื่องมันยาวครับ แต่รับรองคุณสุกรีต้องชอบแน่นอน (ถ้าใช้เป็นแล้ว)
เราเปิด thread นี้ไว้เป็นเรื่องของการหัดใช้ emacs กันดีกว่าครับ
โอ้วกระจ่างครับ
ctrl-\ไม่เคยเจอมาก่อน ถึงว่างมไม่เจอเข็มซะที ขอไปฝึกก่อน แล้วจะกลับมาถามต่อหนุก ๆ ถ้าเลือก mode แล้ว กด tab แล้วมันจัด indent ให้เลย มันส์มาก
ที่ผมชอบมาก ๆ คือ alt-/ เป็นการขอ autocomplete มันจะค้นมาจากที่เราพิมพ์ ๆ นั่นเอามาเติมให้ ถ้าไม่ใช่ก็กด ซ้ำ ๆ ไป มันก็จะไล่ไปหามาให้เรื่อย ๆ ใช้จนติดเลย
ผมเล่น Emacs.app บน OS X แล้วติดอกติดใจ (ถึงจะพิมพ์ไทยไม่ออกอยู่ดีก็ตาม) พยายามลง Emacs.app บน GNUstep มาเนิ่นนานแต่ก็ยังไม่ได้ซักที
สำหรับ Ubuntu Edgy ผมเจอ The Consciousness Repository ที่มี emacs ใหม่สุดๆ จะได้ไม่เหนื่อยคอมไพล์เอง
รอดแล้วครับ ภาษาไทยสวยงาม Emacs 23 สวยกว่าตัวเก่าจนเทียบไม่ได้ ฟอนต์นิ่มนวลชวนอ่าน พิมพ์ไทยสมบูรณ์แบบ ทีนี้ขั้นถัดไปก็ทำความคุ้นเคยกับปุ่ม
ลง Emacs23 มั่งดีกว่า
ตั้งแต่ lulu เล่าให้ฟัง สลับ control กับ cap lock อาการบาดเจ็บจากการใช้ emacs ของผมก็ทุเลาลง
สลับยังไงวานบอก
ใช้ tool ของ gnome อะครับ (gnome-keyboard-properties ถ้าจำไม่ผิด)
เจอละ
Swap Ctrl and CapsLock.นี่มันออกแบบมาสำหรับ Emacs รึเปล่านี่
ตอนนี้พิมพ์ได้ใช้ได้เป็นปกติ เริ่มอยากรู้ว่า
M-<ก็หมดปัญญากด เพราะว่าพอกดalt-shiftมันก็เปลี่ยนภาษาให้เสร็จ พอกด<ก็ได้M-ฒมาแทน นี่ผมต้องปรับอะไรอีกรึเปล่าครับ ผมไม่อยากเปลี่ยนปุ่มภาษาalt-shiftซะด้วยซิC-x TABแต่มันไปทีละตัว แล้วก็ไปเฉพาะ right ด้วย พอจะมีหนทางมั๊ยครับ เหมือนว่าindent-rigidlyจะใส่ count ได้แต่ใส่ไม่เป็นเจออีกหน่อยนึง
C-u 4 C-x TABก็พอทน map key ยังไงครับเนี่ย1. file หลักๆ ที่เรา custom คือ ~/.emacs
ลองดูตัวอย่าง file ผม
2. ต้องลอง check version ของ python-mode.el ดูครับ ว่าใหม่กว่ากันมากไหม
(ดูที่ comment ใน file)
3. ของผมที่ขาดไม่ได้คือ
+ ido mode ทำให้เปิด file, switch buffer ได้ง่ายครับ
+ recentf mode ช่วยเปิด file เก่าๆ ได้เร็ว
+ eshell ใช้ sh ใน emacs เลย
4. M-<
เปลี่ยนวิธีกด Meta จากเดิมที่ใช้ alt ไปเป็น ESC ครับ
pattern การกดก็คือ
กด ESC แล้วปล่อย จากนั้นก็กด <
5. emacs23 ผม แค่เปิด tutorial thai ก็ hang แล้วครับ
อ่า... บน mac ใช้ emacs ตัวไหนดีครับ
อยากลองมั่ง
บน mac ผมใช้ตัวนี้
Aquamacs
ผมใช้ Emacs.app ไม่รู้ตัวเดียวกันหรือเปล่า?
มันมีอีกตัวชื่อ
http://homepage.mac.com/zenitani/emacs-e.html
เดิมผมใช้ตัวนี้ แต่จำไม่ได้ว่าทำไม่ถึงไม่ใช้ต่อ
ตามมาเล่นด้วย ความพยายามของผมเท่าคุณสุกรีเป๊ะเลย :-P
คราวนี้ถามเทคนิคการกดปุ่มหน่อยครับเท่าที่ผมเข้าใจ
C xกับM xM TABผมเจอปัญหามือติดขัด
alt-xเลยอยากรู้เทคนิคการกดว่าใช้นิ้วอะไรมืออะไรM TABผมเลี่ยงไปใช้กดESC TABพบว่าไม่สะดวกอย่างมาก ไม่ทราบว่าเค้าใช้วิธีกัน1. ผมใช้ นิ้วโป้ง กด alt กับนิ้วนาง กด x
แต่มีอยู่ช่วงที่ผม map เป็น M-return แทน (alt-enter)
2. ผมใช้ M-/ แทนครับ เราสามารถใช้
http://emacs.traduc.org/fusion/info/autotype/Hippie-Expand.html
เพื่อร้อยวิธีการ autocomplete ต่างๆเข้าด้วยกัน
3. เรื่อง tags นี่ไม่เคยใช้เหมือนกันครับ
ผมใช้นิ้วโป้งกด alt ใช้ นิ้วชี้กด x
พยายามจะใช้นิ้วโป้งทาบดูบ้างแต่ก็ไม่สำเร็จ :-P
keyboard ของแต่ละคนก็อาจจะหน้าตาไม่เหมือนกันอีกต่างหาก

กดเหมือน veer เลย
อย่างสมมติผมใช้ python-mode
ตัว auto-complete ของ python อยู่ที่ M-tab
ซึ่งไม่ถนัดเลย
ผมก็เลย set อย่างนี้แทน
(setq hippie-expand-try-functions-list '(try-complete-abbrev try-complete-file-name python-try-complete try-expand-dabbrev)) (define-key global-map "\M-/" 'hippie-expand)จะเห็นว่าผมร้อย python-try-complete เข้าไป
ซึ่งตัวนี้มันจะไปเรียกใช้ function ตัวเดียวกับ M-tab
แล้วก็เปลี่ยน M-/ ซ๎่งปกติ จะ map อยุ่กับ dabbrev-expand
ไปเป็น hippie แทน
ซึ่งใน hippie..-list เรากำหนดให้ try-expand-dabbrev เป็นตัวสุดท้าย
ถ้าหาตัวต้นๆไม่เจอ ก็จะตก dabbrev เหมือนเดิม (fallback)
มันบอกว่าไม่รู้จัก
try-complete-abbrevผมเลยใส่เพิ่มเข้าไปถูกรึเปล่าครับ
อ้อ ผมตกไป
ถูกครับ
emacs23 ถ้าต้องการให้ font สวยงาม
สามารถระบุ font เป็น parameter ได้
emacs -fn "Bitstream Vera Sans Mono-12"
ความตั้งใจวันนี้
อ.วิรัช บอกว่าใช้ อ่านเมล ด้วย
ขอใช้ Thunderbird ไปอีกซักพักนะ
ของผมตอนนั้นตั้งเป้าไว้ว่า
demo blognone tech day ด้วย emacs
ตอนนั้นพึ่งหัดใช้เหรอครับ โอ้ว
ซ้อมอยู่นานเลยครับ
คำถามใหม่ shortcut บางอย่างมันมี arg ด้วยน่ะครับ อย่าง
C-x fหรือว่าC-x TABแล้วมันกำหนด arg ยังไงเหรอครับC-u ตามด้วยตัวเลข แล้วก็ C-x f
กรณีเลขน้อยๆ พวก 0-9 สามารถใช้ M-ตัวเลข หรือ C-ตัวเลข ได้เลย
อย่างผมต้องการ 5 column ผมก็กด
C-5 C-x f
สะดวกกว่า C-u หน่อย
โอ้ เยี่ยม เอาไปใช้กับอย่างอื่นได้ด้วย
คราวที่แล้วถามปุ่ม
M xไปแล้วคราวนี้ถามวิธีกดC xบ้างครับ แบบมือโปรเค้ากดกัน รวมไปถึงปุ่มอื่นๆ ใกล้ capslock ด้วยครับ อย่างC aเนี่ยC x ผมใช้ นิ้วก้อยกด control (caplock; อยากลอง happy hacking keyboard) แล้วก็นิ้วชี้กด x ครับ
C-a
a ผมใช้นิ้วนาง
(ถ้าไม่ใช้ caps-lock เป็น control เจอตัวนี้เข้าไป
คิดว่าคงเลิกใช้ emacs ไปแล้วครับ)
C-x
กดเหมือน veer ครับ
หลัง btd1 ผมลองเอา Emacs.app มาลง เปิดโปรแกรมแล้วก็ cmd+q เพราะไปไหนไม่เป็น สุดท้่ายไปอยู่ใน Trash
คราวนี้จะเอาใหม่่ :D
พี่ป๊อก - ปกติ aquaemacs ต้องเลือก font ไหนพวกวรรณยุกต์มันถึงจะตรงน่ะครับ -_-"
เออใช่ ภาษาไทย emacs บน mac มันเพี้ยนนี่หว่า
สารภาพว่า บน mac ไม่เคยใช้ emacs กับภาษาไทยเลย
ภารกิจเสร็จสิ้น เกือบจะคุ้นกับวิธีกดปุ่มแล้ว เจอปัญหาใหม่ ผมไม่ค่อยคุ้นกับการเล่นเคอร์เซอร์เอาซักเท่าไหร่ พอจะมีคำแนะนำมั๊ยครับ
^ไปที่ตัวแรกจริงๆ ใช้0อันหลังนี่ใช้C aได้แล้ว แต่^ยังหาตัวแทนไม่ได้wมันจะไปที่ต้นทำถัดไป แต่M fดันไปโผล่ช่องว่างระหว่างคำ ซึ่งทำอะไรต่อลำบากจัง ในขณะที่M bดันมาโผล่ที่ตัวอักษรแรกของคำ สงสัยผมจะยังไม่เข้าใจจุดประสงค์ของมันfเพื่อกระโดดไปตัวอักษรที่ต้องการในบรรทัดนั้น เช่นf(แต่ใน Emacs ผมจนปัญญาตัวที่เหมือน ^ ผมไม่แน่ใจว่ามีหรือเปล่า
แต่ถ้าเป็นผม ถ้าเกิดอยากให้มีแบบนั้นขึ้นมา ผมก็เขียน elisp แบบนี้ครับ
แล้วก็อาจจะ define C-^ ให้ไปใช้ตัวนี้แทน (แต่ C-^ มันกดยากไปหน่อยครับ)
ข้อ 2 ก็อาจจะเขียนแบบนี้ครับ
มาขอคำแนะนำเรื่อง mode เนื่องจากผมชอบ markdown เป็นชีวิตจิตใจเลยอยากได้
markdown-modeเป็นอย่างมาก แล้วก็ไปเจอต้นฉบับดีๆ เอามาแก้อีกนิดหน่อย มันก็ทำงานพอใช้ได้ แต่อยากรู้ว่าคนปกติเค้าทำแบบนี้กันรึเปล่ามันแบนแต๋ด้วย ใน lisp นี่เค้า indent แบบไหนถึงจะสวยเนี่ย
เรื่อง indent ของ lisp
ปกติ mode จะจัดการให้หมดครับ เรากด tab อย่างเดียว
แต่ถ้ามัน flat อยู่อย่างนี้
ลองเปิดด้วย mode emacs-lisp-mode
แล้วสั่ง indent region (อยู่ใน menu "emacs-lisp") ดูครับ
reference card ผมแปะไว้หลังจอ นึกไม่ออกบอกไม่ถูกก็เงยหน้าดู
มือเริ่มคล่องมากขึ้นเรื่อยๆ ช่วงนี้อยากรู้เรื่อง minibuffer กับ registers ครับ เหมือนกับจะคล้ายๆ กัน แต่ใช้ไม่เป็นทั้งคู่ ตอนนี้ใช้แต่ buffers ธรรมดาเลยอยากรู้ว่ามันเอาไว้ใช้ทำอะไรได้บ้าง
เราจะใช้ font TlwgMono ได้ไหมไหมครับใน emacs แล้วจะไปเพิ่มยังไง
ผมลองสั่ง
emacs -fn "TlwgMono-12"ก็เห็นมันขึ้นมาได้นะ ดูเหมือนว่าจะใช้ font Tlwg
แต่ลองพิมพ์ไทยดู ปรากฎว่า font ที่เป็น thai มันไม่ใช่ Tlwg เสีย
Note: ต้อง emacs-23 นะ