【问题标题】:Is there a faster alternative to using the arrow keys?有没有比使用箭头键更快的替代方法?
【发布时间】:2018-01-12 13:50:10
【问题描述】:

我经常用 R 编写代码,我刚刚意识到将手向下移动到箭头键然后再回到键盘上的字母是多么痛苦。在 Rstudio 中,我必须定期执行此操作,因为工作室会自动完成某些语法(如括号和引号),然后我必须按箭头键移出括号(或引号),然后删除任何可能的让 R 为我完成语法的优势。这对我来说成本很高,因为我是左撇子。是否有更接近字母键的方向键快捷键?

【问题讨论】:

  • 用 vim 代替 rstudio :)
  • 或者其实有更好的解决方案。在自动完成的地方输入引号或右括号 - 它将替换自动完成的实体。这样您就不必使用箭头键了。
  • 或者在 RStudio 中打开 Vim 键绑定 :-)

标签: keyboard rstudio keyboard-shortcuts


【解决方案1】:

简介:

要做到这一点,您有两种方法:

  1. 使用您自己的代码
  2. 使用第三方软件

在这些答案中,我介绍了最有效和最简单的方法,因此对于某些操作系统来说,编写自己的代码既容易又高效,而在另一些操作系统中,它的效率并不高,需要艰苦的工作,没有成就但浪费时间

WINDOWS 用户:

♣在此方法中,您将使用:
alt+I 而不是
alt kbd>+K 代替
alt+J 代替
alt+L 而不是
♣要使用此功能,请按以下步骤操作:

  1. 下载安装autohotkey
  2. 右键单击桌面区域,然后转到新建并创建一个新的“记事本”文件
  3. 打开空记事本文件并将下面的代码复制/粘贴到该文件中
  4. 重命名您的记事本文件,但使用 *.ahk 格式
  5. 点击文件运行脚本
  6. 现在您可以尽情享受,再也不用箭头键了...
        ; #Warn  ; Enable warnings to assist with detecting common errors.
        SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
        SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
        
        ; AHK Command       ; key   = Effect        (Description)
        
        ; ALT Keypress Implied for all below
        
        !i::Send {UP}       ; i UP          (Cursor up line)
        !k::Send {DOWN}     ; k DOWN            (Cursor down line)
        
        !j::Send {LEFT}     ; j LEFT        (Cursor left one character)
        !l::Send {RIGHT}    ; l RIGHT       (Cursor right one character)
        
        !h::Send {HOME}     ; h     ALT + RIGHT (Cursor to beginning of line)
        !;::Send {END}      ; ; ALT + LEFT  (Cursor to end of line)
        
        !u::Send ^{HOME}    ; h     SHIFT + HOME    (Cursor to beginning of document)
        !o::Send ^{END}     ; o SHIFT + END (Cursor to end of document)
        
        ; CTRL + ALT Keypress Implied for all below
        
        !^j::Send ^{LEFT}   ; j     CTRL + LEFT (Cursor left per word)
        !^l::Send ^{RIGHT}  ; l CTRL + RIGHT    (Cursor right per word)
        
        ; SHIFT + ALT Keypress Implied for all below
        
        !+i::Send +{UP}     ; i SHIFT + UP  (Highlight per line)
        !+k::Send +{DOWN}   ; k SHIFT + DOWN    (Highlight per line)
        
        !+j::Send +{LEFT}   ; j SHIFT + LEFT    (Highlight per character)
        !+l::Send +{RIGHT}  ; l SHIFT + RIGHT   (Highlight per character)
        
        !+h::Send +{HOME}   ; h SHIFT + ALT + LEFT  (Highlight to beginning of line)
        !+;::Send +{END}    ; ; SHIFT + ALT + RIGHT (Hightlight to end of line)
        
        !+u::Send ^+{HOME}  ; u SHIFT + CTRL + HOME (Highlight to beggininng of document)
        !+o::Send ^+{END}   ; o SHIFT + CTRL + END  (Hightlight to end of document)
        
        ; SHIFT + CTRL + ALT Keypress Implied for all below
        
        !+^j::Send +^{LEFT}     ; j SHIFT + CTRL + LEFT (Highlight per word)
        !+^l::Send +^{RIGHT}    ; l SHIFT + CTRL + RIGHT    (Hightlight per word)
        
        !+^i::Send +!{UP}   ; i SHIFT + ALT + UP    (Multiply cursor up)
        !+^k::Send +!{DOWN} ; k SHIFT + ALT + DOWN  (Multiply cursor down)
        
        ; CTRL + SHIFT Keypress Implied for all below
        
        +^i::Send +^{UP}
        +^k::Send +^{DOWN}

重要说明

要使用你制作的自动热键脚本,每次打开电脑而不是每次都点击你的脚本,你可以将你的脚本复制到启动文件夹中。

如何找到启动文件夹?
  1. +R
  2. 类型:shell:startup
  3. 将您的脚本复制到该文件夹​​中

MACOS 用户:

♣在此方法中,您将使用 :
option+I 而不是
option kbd>+K 代替
option+J 代替
选项+L而不是

使用hammerspoon

hammerspoon 是一个用于多种用途的强大工具(不仅仅是分配一个键绑定,例如您可以将它用于 windows sanping 或...),我认为这是任何 macos 中必备的工具之一

由于hammerspoon 的文档非常简单,我只是将代码放在这里,您可以从Getting Started with Hammerspoon 安装和配置hammerspoon

hs.hotkey.bind({"alt"}, "I", function()
  hs.eventtap.keyStroke({}, "up")
end)
hs.hotkey.bind({"alt"}, "K", function()
  hs.eventtap.keyStroke({}, "down")
end)
hs.hotkey.bind({"alt"}, "J", function()
  hs.eventtap.keyStroke({}, "left")
end)
hs.hotkey.bind({"alt"}, "L", function()
  hs.eventtap.keyStroke({}, "right")
end)

重要说明

如果您认为hammerspoon 运行缓慢或没有您想要的那么灵巧,另一种选择是Karabiner

基于 DEBIAN 的 LINUX 用户(非 ubuntu-见重要说明):

♣在此方法中,您将使用:
CapsLock+I 而不是
CapsLock kbd>+K 代替
CapsLock+J 代替
CapsLock+L 而不是

alt_gr 而不是 CapsLock

♣怎么办?好吧:

  1. 打开终端,将您的键盘布局写入一个文件(我将其命名为 modmap),然后打开该文件并按照后续步骤进行编辑:

    xmodmap -pke > modmap
    gedit modmap
    
  2. 修改keyCode 108 (alt_Gr/ISO_Level3_Shift)的值,修改后应该是这样的:

    keycode 108 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock
    
  3. 修改keyCode 66(CapsLock)的值,修改后应该是这样的:

    keycode  66 = Mode_switch Mode_switch Mode_switch Mode_switch Mode_switch Mode_switch
    
  4. 修改keyCode 31(i)的值,修改后应该是这样的:

    keycode  31 = i I Up NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
    
  5. 修改keyCode 44(j)的值,修改后应该是这样的:

    keycode  44 = j J Left NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
    
  6. 修改keyCode 45(k)值,修改后应该是这样的:

    keycode  45 = k K Down NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
    
  7. 修改keyCode 46(l)的值,修改后应该是这样的:

    keycode  46 = l L Right NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
    

重要说明

1- xmodmap 不再在 Ubuntu 上使用/支持(因为它对许多用户来说并不方便,我认为他们从 2013 年开始停止使用 xmodmap)但是因为这是一个非常快速编码和使用计算机的专业问题还有编码,我看到许多专业人士使用 Debian 或它自己的基于 debian 的 linux(不是 Ubuntu),他们总是更喜欢原生解决方案而不是插件或...... 无论如何,如果您使用的是 Ubuntu,您可以使用 xkb 或 gnome 调整工具,您可以在 GUI 中调整键盘映射

2- 如果您的键盘上有多个语言/输入,则无法轻松使用此解决方案,但您可以像下面这样使用它:

CapsLock+shift+i 而不是
CapsLock +shift+k 而不是
CapsLock+shift+j 代替
CapsLock+shift+l 代替
例如,如果您还想要 persian_language_input,您可以执行上面的步骤 1、2、3,然后更改其他步骤,如下所示:

keycode  31 = i I Arabic_heh Up 5 6 7 8
keycode  44 = j J Arabic_teh Left 5 6 7 8
keycode  45 = k K Arabic_noon Down 5 6 7 8
keycode  46 = l L Arabic_meem Right 5 6 7 8

注意不要在终端中测试以上键盘快捷键

3- 由于我们使用的是 xmodmap 工具(因为它是原生的,不像 xkb),您只能更改已经使用 AltGr 的键码的 AltGr 键符。所以我们用 CapsLock 改变它来解决这个问题,因为 capslock 让手指更舒服,发现它是一个非常可接受的解决方案。

4- 在大多数情况下 alt_Gr 是键盘上正确的 alt 键

关于 xmodmap 的进一步阅读: ArchWiki - xmodmap

如果有人在 BSD OS(或基于 BSD)中了解此答案,我将不胜感激,如果他/她将其添加到我的答案中

【讨论】:

  • Hammerspoon 很慢,我不认为它是一种解决方案
  • @nick318 好吧,它实际上在我的 macbook-pro-2019-mvvk2 中运行良好,可能与您的系统或不合适的hammerspoon 版本有关。毕竟我认为值得考虑的是,这可能是你的问题,而不是 github 上的 7.2k 盯着项目
  • @nick318 使用 vim 编辑器并将其配置为使用 jkli 而不是箭头键仅用于编程您可以使用 vim 编辑器,它实际上比所有其他代码编辑器更专业,但如果您的问题仍然是一个坑您想在 IDE 或整个操作系统等其他地方使用 jkli 而不是箭头键。
  • @nick318 无论如何,只要我有时间,我都会在 macos 中找到一种 native 方法,并将再次更新这篇文章
  • @nick318 好的,您现在可以考虑使用 karabiner 作为替代品,链接在说明中
猜你喜欢
  • 1970-01-01
  • 2017-07-19
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多