一键跳转至段落首、段落末(Autohotkey)

Autohotkey一键跳转至行首、行末

Obsidian行间的跳转比较麻烦,于是写了个Autohotkey脚本,使用Alt+↑/↓跳转到行首行末

  • 脚本如下,自取,Autohotkey版本是1.1.36.02
; Alt+上下键跳转行首行末
; 初始化变量
is_alt_pressed := false
is_second_press_end := false
is_second_press_home := false
; 按下Alt键时触发的热键
~Alt::
    is_alt_pressed := true
return

; 松开Alt键时触发的热键
~Alt Up::
    is_alt_pressed := false
    is_second_press_end := false
    is_second_press_home := false
return

; 监听 Alt+下键的按键组合
~!Down::
    if (!is_second_press_end) {
        ; 触发End
        Send {End}
        Send {End}
        ; 标记为第二次按下
        is_second_press_end := true
        is_second_press_home := false
    } else {
        ; 如果是第二次按下,触发右
        Send {Right}
        ; 重置状态
        is_second_press_end := false
        is_second_press_home := true
    }
return

; 监听 Alt+上键的按键组合
~!Up::
    if (!is_second_press_home) {
        ; 触发Home
        Send {Home}
        Send {Home}
        Send {Home}
        ; 标记为第二次按下
        is_second_press_home := true
        is_second_press_end := false
    } else {
        ; 如果是第二次按下,触发左
        Send {Left}
        ; 重置状态
        is_second_press_home := false
        is_second_press_end := true
    }
return

注:

  • Autohotkey基础教程:
  • Obsidian 中的 {Home} 和 {End} 的逻辑
    • 和其他软件不太一样,第1、2、3次按下{Home}会分别跳转到当前行首、段落首(仅文字)、段落首(含列表的“- ”以及缩进);第1、2次按下{End}会跳转到当前行末、段落末。
    • 如果已经在段落首(仅文字),则下一次按{Home}会跳转到段落首(含列表的“- ”以及缩进)。
    • 因此脚本中会需要3次{Home}和2次{End}。
    • 如果只需要每次跳转一行而不是一个段落,则可以改为1次{Home}和1次{End}。
2 个赞

obsidian-canzi/Enhanced-editing: 旨在增强 Obsidian 编辑功能的插件 (github.com)

这个插件提供了跳转到段落首和段落末的功能, 并且可以设置快捷键, 可以用一下试试

1 个赞