大家有没试过按 ctrl 按到手指痛?

spacemacs 自带 evil 了,我也习惯用 vim 的快捷键,习惯用 ctrl + d/u 来滚屏,这样按久了就容易痛了 :joy:

感觉你可以建一个micro-state,比如

;; 一个micro-state ,用来快速翻页
(spacemacs|define-micro-state liu233w/view
  :use-minibuffer t
  :doc "`d' scroll-down `u' scroll-up `f' scroll-page-down `b' scroll-page-up"
  :bindings
  ("d" evil-scroll-down)
  ("u" evil-scroll-up)
  ("f" evil-scroll-page-down)
  ("b" evil-scroll-page-up))

;; 这个micro-state用来进行快速翻页,
;; 这样在连续翻页的时候就不需要一直按住ctrl了。
(spacemacs/set-leader-keys "ov" 'spacemacs/liu233w/view-micro-state)

激活之后就可以通过dufb(不用加ctrl)来翻页了。按下其他的键就可以退出micro-state。

1 个赞

hydra 也能实现:

(defhydra hydra-evil-scroll-up-and-down (:hint nil)
  "Scroll [u] up / [d] down, Page [p] up / [n] down, [q] quit"
  ("u" evil-scroll-up)
  ("p" evil-scroll-page-up)
  ("d" evil-scroll-down)
  ("n" evil-scroll-page-down)
  ("q" nil))

(define-key evil-normal-state-map (kbd "C-d")
  '(lambda ()
     (interactive)
     (evil-scroll-down 0)
     (hydra-evil-scroll-up-and-down/body)))

(define-key evil-normal-state-map (kbd "C-u")
  '(lambda ()
     (interactive)
     (evil-scroll-up 0)
     (hydra-evil-scroll-up-and-down/body)))

首次按组合键 C-u/d 翻页并激活,后续按单个键u/d/p/n就可以了,无需额外的激活键。存在的问题:1)单行提示没有高亮色; 2) 提示栏实际占了两行的高度。

或者简单点,把[/] 映射为 evil-scroll-up/down

1 个赞

那个首次按组合键的方法我也考虑过,但是这么做的话就没法按10 C-d来向下滚动10行了。难不成每个函数都要写一个interactive命令吗_(:зゝ∠)_

(define-key evil-normal-state-map (kbd "C-d")
  '(lambda (count)
     (interactive "P")
     (evil-scroll-down count)
     (when (not count)
       (hydra-evil-scroll-up-and-down/body))))

(define-key evil-normal-state-map (kbd "C-u")
  '(lambda (count)
     (interactive "P")
     (evil-scroll-up count)
     (when (not count)
       (hydra-evil-scroll-up-and-down/body))))

不必每个,覆盖两个最常用的就好了。

各人侧重点不同,我更多是考虑记忆负担一致性的问题,即使有了上边的设置,连续按C-u/d也不会有问题,只是 minibuffer 多了一提示而已。然后 Emacs 用爽了,偶尔回到裸奔的 vi,习惯性按 C-u/d总没有错。

2 个赞

我写了一个宏,可以自动生成对应的函数。这下好办多了 :smile:

在spacemacs生成micro-state的同时为每个命令生成对应的执行并进入micro-state的函数

1 个赞

交换caps 和 ctrl,就没痛过。就是别人用你的电脑,会很痛苦。

用手掌按压Ctrl,一边手掌一个Ctrl,跟多了一个手指一样。 不过笔记本键盘因为键帽太矮,手掌很难压倒,所以笔记本我一般外接键盘:wink:

笔记本的键程太短,反作用力挺大的。估计是你习惯了敲键盘很用力。

键盘应该这样改键

新入HHKB,完美使用Emacs

我在mac中 将command关联为control,觉得还可以。

学会使用ace-jump跳转,我绑定到M-[ 开始ace-jump,就能避免大量使用c-n/p/f/b了,用helm的m-x调用命令也会省很多按键

我偶然发现 spacemacs 已经有这种实现了…

直接 SPC n , 或 . 或 < 或 > 就能进入 transient state,然后按 ,.<> 来翻页,按其他键退出该 state

1 个赞

已经实现了啊_(:зゝ∠)_

看来我的 multiple-micro-state.el 也已经没用了_(:зゝ∠)_

  (defhydra hydra-look-over (:body-pre (next-line)
                                       :hint nil)
    "moving"
    ("n" next-line)
    ("p" previous-line)
    ("f" forward-char)
    ("b" backward-char)
    ("F" forward-word)
    ("B" backward-word)
    ("a" beginning-of-line)
    ("e" move-end-of-line)
    ("v" scroll-up-command)
    ("V" scroll-down-command)
    ("l" recenter-top-bottom)
    ("<" beginning-of-buffer)
    (">" end-of-buffer)
    ;; hideshow
    ("t" hs-toggle-hiding)
    ("s" hs-show-block)
    ("h" hs-hide-block)
    ("S" hs-show-all)
    ("H" hs-hide-all)
    ("q" nil))
  (global-set-key (kbd "C-c n") 'hydra-look-over/body)

把代码折叠也加进去,看代码更方便。

没有啊。我是不是比较 异类? 我是既没有和Caps Lock 交换, 也不用掌压就可以无压力 按到左Ctrl的人,(或许我手比较小? 而且多亏于emacs的使用,ctrl+alt各种快捷键 了如指掌。 在其他 需要用到ctrl 各种 默认快捷键或自己配置快捷键中 ,如鱼得水。

用着用TECO的我笑看你们按Ctrl。

感觉自己已经不需要 Evil 了

lol。看好多人都互换了。 我试着把caps lock和右边ctrl互换。 现在左边ctrl和caps lock 都是 ctrl,确实挺舒服哈:grin:

感觉 ace-jump 跳转步骤比 atom 上复杂了一步, 如果是 spc j j 直接出来选项就好了