Re: [emcs] emacs新手的幾個問題

看板Editor作者 (平澤 唯)時間9年前 (2015/03/24 02:46), 編輯推噓1(1013)
留言14則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《ireullin (raison detre)》之銘言: : 標題: [emcs] emacs新手的幾個問題 : 時間: Sun Mar 22 14:42:31 2015 : : 因為是新手,所以很多東西還不熟悉 : 請多多包涵 : 我使用的是emacs24.4 : 都是在-nw狀態下執行 : 以下是我的問題 : : 1.設定tab為四個空格 : 不管開啟甚麼檔案 : 都希望按下tab鍵之後是四個空格 : 網路上google了很多 : 可是每個人的解法都不一樣 : 我試了好像也不行 : 這個要求有點麻煩,因為每種程式語言的major-mode可能都會自己自訂他的tab 會有怎樣的功能(精確的說,是該major-mode會在自己的map中把tab給bind到 哪個function),像是內建的python-mode按多次tab會來回indent。這是沒辦 法的,你只能手動覆蓋預設的binding。 所以要達到你的要求,你必須手動明確明確指定哪些major-mode的map要讓tab 綁到「插入四個空格」。然後...學點Elisp吧XD 按C-h v 輸入 major-mode 可以查看目前的major-mode實際叫做什麼名子, mode名稱-map就是該mode的map名稱: (defun my-tab-insert-space () (interactive) (insert " ")) (mapc (lambda (mode-name) (define-key (symbol-value mode-name) (kbd "<tab>") 'my-tab-insert-space)) '(emacs-lisp-mode-map lisp-interaction-mode-map cperl-mode-map python-mode-map ;; 繼續加上你要的mode )) 不過在這個設定之前,必須先加上(require '你要的mode)不然他會說沒有 這個map之類的錯誤。 : 2. 我在xwindow下面的console按著shift加上方向鍵 : 可以達到C-@一樣的功能 : 但是在windows使用putty連上linux之後 : 好像這個功能就沒了 : 是有哪裡要設定嗎 tty裡面shift除了輸入字元外其他的binding應該都是不起作用的,請另外想 個binding。 : 3. 如何複寫原本的熱鍵 : 又如何新增一個熱鍵是原有的功能但是 : 但是原本的熱鍵不被覆蓋掉 : e.g. : 原本C-w是剪下,但其實有點不太順手= =a : 希望可以再加一個C-x x也是剪下功能 : 而C-w是狀況是要並存或是關閉 : : 以上 : 再麻煩大家了 : 你在Emacs中的任何操作其實都是一個個的function。例如預設的方向鍵上、 下、左、右實際上分別是綁到(previous-line) (next-line) (left-char) (right-char)這幾個functions。 要怎麼知道特定按鍵是bind到哪個function? => C-h k [按鍵] 顯示該按鍵在目前buffer是bind到哪個function => C-h f [function name] 顯示該function在目前buffer中被bind到哪些key 「一個function可以被bind到數個key」,所以你高興的話也可以把你的上下左 右鍵全部綁成(newline)讓沒有人會用你的Emacs。 綁的方法很簡單: 1. 上面提過的local key-binding(指定在你要的mode有效) (define-key 你要的mode-map (kbd "C-x x") 'function-name) 2. Global key:所有mode皆有效(除非該mode已經有使用該key-binding, 將優先採用local key binding) (global-set-key (kbd "C-x x") 'function-name) 至於「C-w是狀況是要並存或是關閉」這句請加油,我真的不知你在寫啥... : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.115.137 : ※ 文章網址: https://www.ptt.cc/bbs/Editor/M.1427006553.A.9BC.html --

10/15 02:11,
其實細細品味k-on可以感受到一些生活中的感動
10/15 02:11

10/15 02:12,
這是我對這作品評價不錯的原因
10/15 02:12

10/15 02:12,
其實細細品味小唯可以感受到一些生理上的衝動
10/15 02:12

10/15 02:12,
這是我對這作品評價不錯的原因
10/15 02:12

10/15 02:13,
樓上紳度超高
10/15 02:13

10/15 02:15,
你們想歪了 我是指最後一集會讓人流眼淚啊
10/15 02:15
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.158.113 ※ 文章網址: https://www.ptt.cc/bbs/Editor/M.1427136404.A.639.html

03/24 11:47, , 1F
謝謝您熱心的回答,我開始在看lisp了
03/24 11:47, 1F

03/24 11:48, , 2F
在這之前我第一個問題已經自己寫出功能解決掉了
03/24 11:48, 2F

03/24 11:49, , 3F
其他問題也在努力嘗試中
03/24 11:49, 3F

03/24 11:50, , 4F
話說我最近還真的在看k-on 剛看到了簽名檔
03/24 11:50, 4F

03/24 11:51, , 5F
還心虛了一下=,,=
03/24 11:51, 5F

04/05 14:14, , 6F
其實要看是單純 tab 還是縮排,設 tab 寬度就是 tab-width
04/05 14:14, 6F

04/05 14:15, , 7F
縮排就複雜了,簡單來說 indent-tabs-mode 有一點影響
04/05 14:15, 7F

04/05 14:16, , 8F
但`按下 tab 鍵'的自動縮排行為,得看各語言的風格設定
04/05 14:16, 8F

04/05 14:16, , 9F
並不是單純調整 tab 或 4空白 設定就能搞定
04/05 14:16, 9F

04/05 14:17, , 10F
像 cc-mode 裡就預設提供多種風格,每一種縮排都是不同的
04/05 14:17, 10F

04/05 14:18, , 11F
我個人其實不建議暴力把 tab 換成單純的「插入空白」
04/05 14:18, 11F

04/05 14:19, , 12F
在編輯程式碼的情況,tab 也可能是將程式碼移動到正確縮排
04/05 14:19, 12F

04/05 14:20, , 13F
「移動」包含往前移與往後移,而單純插入空白只有一種
04/05 14:20, 13F

04/05 14:22, , 14F
如果你喜歡一切自己調整就另當別論,但就喪失 emacs 優點了
04/05 14:22, 14F
文章代碼(AID): #1L45-KOv (Editor)
文章代碼(AID): #1L45-KOv (Editor)