autohotkey自动化执行vim命令

开发原因

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

存在的问题:

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

实现功能

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

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

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

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

代码如下:

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

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

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

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

代码:

bash 复制代码
;(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

代码:

bash 复制代码
;(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,就是在行末进行编辑, 不耽搁事情.

代码:

bash 复制代码
;(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

代码:

bash 复制代码
;(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, 光标进入行末的编辑模式

代码:

bash 复制代码
;(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,

bash 复制代码
;(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命令, 回车执行指令

bash 复制代码
;(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这个是自带快捷键

代码:

bash 复制代码
; (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哈哈~

bash 复制代码
;(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.csdn.net/qq_57484399/article/details/140478467

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

https://ww0.lanzoul.com/b00g2gap1c

密码:8kd4

失效,联系qq2958360390

相关推荐
神奇夜光杯4 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
小c君tt5 小时前
MFC中Excel的导入以及使用步骤
c++·excel·mfc
一名技术极客7 小时前
Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览
pdf·powerpoint·excel·文件在线预览
用余生去守护7 小时前
【反射率】-- Lab 转换(excel)
excel
进击的六角龙7 小时前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
TracyDemo7 小时前
excel功能
excel
lc寒曦7 小时前
【VBA实战】用Excel制作排序算法动画
排序算法·excel·vba
zzzgd8167 小时前
easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头
java·excel·表格·easyexcel·导入导出
努力学习技能的LY7 小时前
Excel:vba实现批量插入图片批注
excel
图片转成excel表格9 小时前
wps怎么算出一行1和0两种数值中连续数值1的个数,出现0后不再计算?
excel·wps