是否可以改善在命令行上重复执行命令的vim映射?

韦恩·沃纳(Wayne Werner)

所以这是我的映射:

nnoremap <cr> :nnoremap <lt>cr> :w!<lt>cr>:!tmux send-keys -t :1.1 "py.test --cov=." C-m <lt>cr><lt>cr><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left><left>

太棒了 它的作用是当我第一次启动vim会话(或重新加载vimrc之后)并按Enter键时,我可以立即输入我所在的tmux会话的名称,然后再次按Enter键。假设我正在窗口1的第零个窗格中编辑文件,并且进行了tmux拆分(在我的典型情况下为水平)。随后在正常模式下按Enter键将保存我的活动文件并在另一个窗口中启动py.test测试。这意味着我可以在测试通过之前从技术上继续编码。我忘记了我最初是从谁那里得到这个主意的,可是那个家伙。

总之,你毫无疑问注意到,有一个很大<left>的在测绘,因为我想启动命令出能够设置会话名称。但是在某些情况下,我可能会在其他窗口或其他内容中编辑代码,或者需要更改pytest命令或其他内容,因此我仍然希望能够进行这些修改。

有什么方法可以改善此映射?也许以完全不同的方式来对待它?

英戈·卡卡特(Ingo Karkat)

您的初始映射将构建另一个映射命令,并用于<Left>将光标插入正确的位置以完成并执行它。

替代方法是定义一个自定义命令(例如:TestInSession),该命令以可变部分作为参数。然后,您的初始映射可以仅构建其他映射,将光标保留在的末尾:TestInSession,并且命令行中的混乱程度将减少,并且末尾的编辑更容易。

如果需要重新配置其他映射的功能,则可以定义一个不会被覆盖的替代初始映射,例如:

:nnoremap <Leader><cr> :nnoremap <lt>cr> ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章