比如我输入分号会输入:=
两次分号就是分号,然后可以针对不同文件类型设置不同的,类似这个我这个vim里的操作
可以参考一下这个
https://github.com/noctuid/general.el#mapping-under-non-prefix-keys
(general-imap ";"
(general-key-dispatch (lambda () (interactive) (insert ":="))
:timeout 0.25
";" #'self-insert-command))
这个能设置文件类型么,
可以,需要把对应的键绑定加到major mode的keymap里面
(general-imap ";" foo-mode-map ...)
不是。。。。
没看明白你的需求。。。能再解释一下吗?
用这个:
参考这个配置:
(use-package ess-smart-equals
:init (setq ess-smart-equals-extra-ops '(brace paren percent))
:after (:any ess-r-mode inferior-ess-r-mode ess-r-transcript-mode)
:config (ess-smart-equals-activate))
是不是想要 prettify-symbols-mode
?很基础的功能。
不太清楚这个是啥
我试一下这个。
prettify-symbols-mode是实际输入a,显示成b。楼主估计是想输入a展开成b。
所以你这功能是vim内置的还是插件的?如果是内置的,你可以问问evil maintainer
electric-quote-mode有类似的操作,可以看看他的实现
二楼是对的
其它的都不是
用的插件,看着发蒙呢,。感觉很简单的功能啊,
(defun n-char-before-point-to-string (num)
(let* ((point (point))
(point-before (- point num))
)
(when (and (> point-before 0)
(char-before point-before))
(buffer-substring point-before point)
)
)
)
(defmacro twice (first second map)
`(define-key ,map (kbd ,second)
(lambda ()
(interactive)
(if (s-suffix? ,first (n-char-before-point-to-string (length ,first)))
(progn
(delete-backward-char (length ,first))
(insert ,second)
)
(insert ,first)
)
)
))
(twice ":=" ";" org-mode-map)
2 个赞
也就是没有办法用两个分号输入两个:=了
vim中应该是可以的
你得考虑用户输入的时间间隔
楼上上应该可以满足楼主的需求。
再思考一下本来的需求:据我所知go的赋值有a = b
和a := b
两种?那么这个需求可以考虑下用我的这个方案:
话说要咋用这段code