这是我的映射:
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 session 时(或在重新加载 vimrc 之后)并按下回车键,我可以立即键入我所在的 tmux session 的名称并再次按下回车键。假设我正在窗口 1 的第零个 Pane 中编辑我的文件并且我有一个 tmux 拆分(在我的典型情况下是水平的)。随后在正常模式下按回车键将保存我的事件文件并在另一个窗口中启动我的 py.test 测试。这意味着我可以在测试通过之前从技术上继续编码。我忘记了我最初是从谁那里得到这个想法的,但是 h/t 那个人。
无论如何,您肯定注意到有很多 <left>
在那映射中,因为我想启动能够设置 session 名称的命令。但也可能有这样的情况,我在不同的窗口或其他东西中编辑我的代码,或者我需要更改我的 pytest 命令或其他东西,所以我仍然希望能够进行这些修改。
有什么方法可以改进此映射?也许通过完全不同的方式来处理它?</p>
最佳答案
您的初始映射构建另一个映射命令,并使用 <Left>
将光标插入正确的位置即可完成,然后执行。
另一种方法是定义一个自定义命令(例如 :TestInSession
),它将可变部分作为参数。然后,您的初始映射可以只构建另一个映射,将光标留在 :TestInSession
的末尾。 ,这样您的命令行就不会那么困惑,最后的编辑也更容易。
如果您需要重新配置其他映射的能力,您可以定义一个不会被覆盖的替代初始映射,例如:
:nnoremap <Leader><cr> :nnoremap <lt>cr> ...
关于vim - 是否可以改进在命令行上重复命令的 vim 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053563/