作者YuiHirasawa (平泽 唯)
标题Re: [emcs] emacs新手的几个问题
时间Tue Mar 24 02:46:36 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/Editor/M.1427006553.A.9BC.html
--
1F:→ blaze520:其实细细品味k-on可以感受到一些生活中的感动10/15 02:11
2F:→ blaze520:这是我对这作品评价不错的原因10/15 02:12
3F:→ mariandtmac:其实细细品味小唯可以感受到一些生理上的冲动10/15 02:12
4F:→ mariandtmac:这是我对这作品评价不错的原因 10/15 02:12
5F:→ loneblackcat:楼上绅度超高 10/15 02:13
6F:推 mariandtmac:你们想歪了 我是指最後一集会让人流眼泪啊 10/15 02:15
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.234.158.113
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Editor/M.1427136404.A.639.html
7F:推 ireullin: 谢谢您热心的回答,我开始在看lisp了 03/24 11:47
8F:→ ireullin: 在这之前我第一个问题已经自己写出功能解决掉了 03/24 11:48
9F:→ ireullin: 其他问题也在努力尝试中 03/24 11:49
10F:→ ireullin: 话说我最近还真的在看k-on 刚看到了签名档 03/24 11:50
11F:→ ireullin: 还心虚了一下=,,= 03/24 11:51
12F:→ letoh: 其实要看是单纯 tab 还是缩排,设 tab 宽度就是 tab-width 04/05 14:14
13F:→ letoh: 缩排就复杂了,简单来说 indent-tabs-mode 有一点影响 04/05 14:15
14F:→ letoh: 但`按下 tab 键'的自动缩排行为,得看各语言的风格设定 04/05 14:16
15F:→ letoh: 并不是单纯调整 tab 或 4空白 设定就能搞定 04/05 14:16
16F:→ letoh: 像 cc-mode 里就预设提供多种风格,每一种缩排都是不同的 04/05 14:17
17F:→ letoh: 我个人其实不建议暴力把 tab 换成单纯的「插入空白」 04/05 14:18
18F:→ letoh: 在编辑程式码的情况,tab 也可能是将程式码移动到正确缩排 04/05 14:19
19F:→ letoh: 「移动」包含往前移与往後移,而单纯插入空白只有一种 04/05 14:20
20F:→ letoh: 如果你喜欢一切自己调整就另当别论,但就丧失 emacs 优点了 04/05 14:22