我配置成了tab弹出company的补全框,所以想知道有没有办法让c-i和tab分开
就是tab和c-i是相同的,能不能把这两个分开
终端不能分辨 <tab>和 C-i
我的做法是用 xkeysnail 把特定的键(Ctrl-I
)映射到一个平时用不上的按键序列(F2-1-0-0
),再在 emacs 里面把这个按键序列映射到想要的功能。
xkeysnail:
emacs:
这个方法应该可以
这个方法要在终端下生效,就得终端支持把c-i映射成自定义的序列吧?
终端的处理是 xkeysnail 之后完成的,
键盘 --> xkeysnail --> 终端 --> emacs
键盘按下 ctrl-I
之后,终端看来用户按下的是 f2-1-0-0
;这个转换过程对终端是透明的。
在windows下就只能靠终端来映射了吧
如果终端是 iTerm2 可以更改按键映射:
$ emacs -Q -nw --eval "(progn
;; this is C-i
(global-set-key (kbd \"\e[emacs-C-i\") (lambda () (interactive) (message \"C-i\")))
;; this is TAB
(global-set-key (kbd \"TAB\") (lambda () (interactive) (message \"TAB\"))))"
公司的只能用win,真是难办
我之前用 windows 弄按键映射的时候用的是 autohotkey,它可以调一些 windows 的 api,理论上是可以只在特定应用下启用映射的。刚刚查了下似乎也可以:automation - AutoHotKey: How to make my script run only within a specific program? - Super User
这个确实可以 我弄过
这个better-jump比起原来的jump改进了哪里?
不知道 ,都是 doom 自带的。
装个虚拟机跑 linux 能省很多事
网都没有~~
学到了,原来可以 [xxx 这样
但是整个终端也没法正常使用 C-i
了,一按就显示映射字符串。
问题不大(可以多个iterm 的 profile,其中一个专门 emacs 就行
我也有类似的问题,不过主要是在org在终端下面不方便用tab来在表格中移动,所以我用这里的代码来实现:
(evil-define-key 'motion org-mode-map (kbd "TAB")
'(menu-item "evil-org-cycle-maybe" nil
:filter (lambda (&optional _)
(when (and (not (display-graphic-p))
(or (org-at-heading-or-item-p)
(org-at-table-p)
(org-at-block-p)))
#'org-cycle)))))
至于你的情况,就更加简单了,只在insert状态下绑定company,就不会影响到C-i的跳转了