autohotkey自动化执行vim命令

开发原因

首先讲一下为什么用这个自动化执行脚本?

存在的问题:

vim作为linux自带唯一的编辑器, 开发时, 不得不用, 但是他的按键模式复杂, 就比如最简单的复制黏贴, 都需要按下好几次esc按键和插入, 极大的增加了初学者的学习成本, 并且在掌握了更快的键盘方案后, 就感觉vi还是略显笨重.

实现功能

但是没办法, 我们还要用, 所以, 我们就把最简单的命令,进行键盘映射, 利用autohotkey来和vi命令进行交互, 来实现我们的功能:

注意:想快速使用,请直接浏览一遍,然后跳转后续链接下载体验

(1)退回一般模式: Alt 加 Q

我们按下alt+q, 但是vim接受到 esc. 因为esc太远了, 麻烦, 所以对此进行映射

代码如下:

;(1)ESC: 监听 Alt+q 的组合键	//核心命令
!q::
    Send {Esc}
return

(2)选中可视化: Alt 加 G

现象: 按下 Alt + G 后,依次释放 Esc、大写 V、Home 按键

vi中, 一般模式下按下 v, 就可以进入可视化模式, 也就是进入选中模式, 类似window下的鼠标选区, 此时我们再通过 上下左右移动就可以选中了(配合下面的复制,剪切,删除等使用)

代码:

;(2)选中可视化:按下 Alt + G 后,依次释放 Esc、大写 V、Home 按键
!g::
    Send {Esc}
    Sleep 50 ; 稍作延时,确保按键被正确处理
    Send {V down} ; 按下大写 V
    Sleep 50 ; 稍作延时,确保按键被正确处理
    Send {V up} ; 释放大写 V
    Sleep 50 ; 稍作延时,确保按键被正确处理
    Send {Home}
return

(3)剪切: Alt 加 X

现象:按下 Alt + X 后,依次释放 X、大写A

vi中, 在一般模式下, 选中选区后,按下x,就会剪切所选部分, 此时我们如果还要编辑代码的话, 就需要回到编辑模式, 所以我们接着自动按下大写A

代码:

;(3)vi剪切:按下 Alt + X 后,依次释放大写 X、大写 A
!x::
    Send {X down}
    Sleep 50
    Send {X up}
    Sleep 50
    Send {A down}
    Sleep 50
    Send {A up}
return

(4)复制: Alt加 C

现象:按下 Alt + C 后,依次释放 yy , 然后大写A

解释: 一般模式下, 在视觉模式选中时, 按下yy是复制, 所以我们这个需要结合 视觉模式的alt + g用, 选区选完, 然后我们按下alt +c ,就会发送yy , 就可以复制选区, 从而达到*复制的目的, 后面我们复制完了, 就直接自动进入编辑模式, 大写A,就是在行末进行编辑, 不耽搁事情.

代码:

;(4) 复制:按下 Alt + C  后,依次释放 yy , 然后大写A
!c::
    Send {y down}
    Sleep 50
    Send {y up}
    Sleep 50
    Send {A down}
    Sleep 50
    Send {A up}
return

(5)粘贴:Alt加V

现象:粘贴:按下 Alt + V 后,依次释放 Esc、大写 P、大写 A

解释: 我们不管处于什么模式, 直接进入一般模式, 所以 按下alt+v后, 直接释放esc , 然后 利用vim的P进行粘贴, 粘贴完后, 直接进入行末, 进行编辑,所以再输出 大写A

代码:

;(5) 黏贴:按下 Alt + V 后,依次释放 Esc、大写 P、大写 A
!v::
    Send {Esc}
    Send {P}
    Send {A}
return

(6)撤销: Alt加Z

现象:按下 Alt + z 后,依次释放 Esc、u、大写 A

解释:一般模式下,按下u是撤销, 所以我们先发送esc退回一般模式, 然后u退回一般模式, 然后再按下 A, 光标进入行末的编辑模式

代码:

;(6) 撤销:按下 Alt + z 后,依次释放 Esc、u、大写 A
!z::
    Send {Esc}
    Send {u}
    Send {A}
return

(7)保存: Alt加W

现象: 按下 Alt加W , 然后释放esc , 冒号, w,回车, 大写A

解释: 按下 Alt加W , 然后释放esc ,进入一般模式, 发送冒号: 然后发送w , 回车, 这样就保存了, 但是我们还想接着进行编辑, 所以再加一个 A,

;(7)保存: alt +w
!w::
    Send {Esc}
    Sleep 50
    Send {:} ; 发送英文冒号
    Sleep 50
    Send {w down}
    Sleep 50
    Send {w up}
    Sleep 50
    Send {Enter} ; 发送回车键
    Sleep 50
    Send {A down}
    Sleep 50
    Send {A up}
return

(8)保存退出: Alt加R

现象:按下alt+r, 释放esc, 冒号, wq, 回车

解释:esc进入一般模式, 冒号输入wq命令, 回车执行指令

;(8) alt + r 保存退出: 
!r::
    Send {Esc}
    Sleep 50
    Send {:} ; 发送英文冒号
    Sleep 50
    Send {w down}
    Sleep 50
    Send {w up}
    Sleep 50
    Send {q down}
    Sleep 50
    Send {q up}
    Sleep 50
    Send {Enter} ; 发送回车键
return

(9)全选:Alt加A

现象: 按下 Alt + A 后,依次释放 Esc 按键,输出小写 v,然后连续两个 gg,接着是 Ctrl + End

解释: esc进入一般模式, 然后gg,光标移动到开头, v进入视觉模式, 后面就可以进行*复制, 我们这里是要全选, 所以光标直接位移到末尾即可, ctrl+end这个是自带快捷键

代码:

; (9)全选:按下 Alt + A 后,依次释放 Esc 按键,输出小写 v,
; 然后连续两个 gg,接着是 Ctrl + End
!a::
    Send {Esc}
    Sleep 50
    Send {g}
    Send {g}
    Sleep 50
    Send v
    Sleep 50
    Send {CtrlDown}{End}{CtrlUp}
return

(10)删除选中:alt+backspace

现象:按下alt+backspace, 在视觉模式选中后,释放 del, 可以删除选中, 然后A进入编辑模式

解释:没什么好解释的, O(∩_∩)O哈哈~

;(10)删除
!BS::
    Send {Del}
    Sleep 50
    Send {A}
return

脚本使用教程

看b战视频:【打字的那些事之快速移动光标】 https://www.bilibili.com/video/BV1tg411W7YQ/?share_source=copy_web&vd_source=1de4617d8462b141bb53b6be82555d31

另一种方案,看上篇博客:

https://blog.****.net/qq_57484399/article/details/140478467

两个快捷键可执行文件链接:

https://ww0.lanzoul.com/b00g2gap1c
密码:8kd4

失效,联系qq2958360390

上一篇:LeetCode第501题:二叉搜索树中的众数的Java实现-3. 算法设计


下一篇:新时代:让中药煎制自动化、信息化