当我调试它们时,我经常插入binding.pry
到我的 ruby 文件中。当我使用 Vim 时,我很想自动化它以避免每次都重新输入。我怎么能做到?
我想映射的确切顺序是:
- 插入新行。
- 插入
binding.pry
新创建的行。 - 返回正常模式。
编辑: binding.pry
是我要粘贴的文本,而不是文件。
插入前:
a = 1
b = 2
插入后:
a = 1
binding.pry
b = 2
当我调试它们时,我经常插入binding.pry
到我的 ruby 文件中。当我使用 Vim 时,我很想自动化它以避免每次都重新输入。我怎么能做到?
我想映射的确切顺序是:
binding.pry
新创建的行。编辑: binding.pry
是我要粘贴的文本,而不是文件。
插入前:
a = 1
b = 2
插入后:
a = 1
binding.pry
b = 2
录制宏(未经测试)
qq " record macro to register q
o " insert empty line below cursor
esc " exit insert-mode
:r /path/to/binding.pry " insert content of file
esc " cmd-mode
q " end recording
要执行宏,请执行
@q
或将以下内容添加到您的.vimrc
文件中
更新
要插入字符串binding.pry
,映射变为:
map ,p obinding.pry<ESC>
Easyest 是从插入模式触发的缩写:
:ia debug <CR>binding.pry
现在,当您键入 时debug
,文本binding.pry
将插入新行。
文档::help abbreviations
另一个映射是:
nnoremap <silent> gb :let a='binding.pry'\|put=a<cr>
根据Fredrik 的想法,您可以在您的 中定义和存储一个宏.vimrc
,例如g
:
let @g = "Obinding.pry^["
请注意,键入您点击的转义字符CTRL-V然后ESC。
然后您可以@g
执行宏。
通常,如果要保存宏,一种简单的方法是记录宏,例如在 register 中q
,然后执行"qp
(q
宏名称在哪里)粘贴宏。然后用
let @x = "..."
您希望它始终拥有的宏名称在哪里x
并将其放入.vimrc
文件中。
我发现自己陷入了一个很大的困境。为了解决这个问题,我在我的 .vimrc 中放置了以下映射:
imap <C-b> binding.pry
nnoremap <leader>bp O<% binding.pry %><esc>
第一个允许我在已经处于插入模式时插入 binding.pry。
第二个让我使用我的 leader+bp 在当前行上方放置一个 binding.pry。
您可以使用以下击键为此目的定义一个快捷方式
解释
现在,当您处于正常模式时,击键 <b><i>(一个接一个键)将在当前行下的新行中插入“binding.pry”。
步骤 3 的说明:nnoremap 是用于映射击键以执行某些操作的命令。'bi' 是按键组合。您可以根据自己的需要进行调整。其余的是 VIM 上的正常编辑序列: