gpt4 book ai didi

vim 命令将键映射到映射键的命令

转载 作者:行者123 更新时间:2023-12-04 18:11:25 24 4
gpt4 key购买 nike

背景:我正在使用此映射 map ,r :! bundle exec ruby %<CR>一直在轻松运行我目前正在编辑的测试文件。但是我也这样做:

map ,t :! bundle exec ruby test/integration/some_integration_test.rb<CR>

这样我就可以在处理其他文件时通过两次击键运行这个特定的集成测试。它具有硬编码路径,当我移动到应用程序的某个其他区域时,我在上面的命令中键入另一个集成测试文件路径。

如何制作自动创建此类映射的命令?
map ,T :map ,t :! bundle exec ruby %<CR>将不起作用,因为它在创建映射时不会扩展 %,因此 ,t 将始终运行当前文件(而我希望它运行我在创建映射时正在编辑的文件)。

[编辑]:
从答案稍微调整解决方案:
nnoremap ,r :! bundle exec ruby %<CR>
nnoremap ,T :let g:testfile = expand('%:p')
nnoremap ,t :! bundle exec ruby <C-r><C-r>=g:testfile<CR><CR>
  • ,r总是在光标下运行文件
  • ,T将当前文件路径保存在一个变量中以供以后运行
  • ,t运行之前存储的文件路径
  • 最佳答案

    只需将当前文件名(最好使用完整的绝对路径以免受对当前目录的更改;:p 修饰符执行此操作)在变量中,然后插入变量而不是 %通过 <C-r> :

    :noremap ,r :let g:testfile = expand('%:p')<Bar>! bundle exec ruby %<CR>
    :noremap ,t :! bundle exec ruby <C-r><C-r>=g:testfile<CR><CR>

    PS:我用 :noremap ,因为这通常更安全,并且应该是首选,除非您确实需要重新映射。

    关于vim 命令将键映射到映射键的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579616/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com