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

标签 vim

这是我的映射:

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/

相关文章:

debugging - 如何逐步执行vim宏(如调试)?

vim - 用于浏览Gvim中的函数和变量的插件

vim - 如何向 VIM 添加自定义动词?

vim - 增量改变 vim 中的模式

haskell - Vim:在与光标相同的列中开始插入新行

compilation - 在后台运行:make from gVim

vim - 在获取 vimrc 文件后如何修复此错误 "E122: Function MyDiff already exists, add ! to replace it"?

search - 如何在 Vim 中进行不区分大小写的搜索

vim - Coc-Prettier 没有获取项目或家庭配置

Vim 魔法来做到这一点