21

当我调试它们时,我经常插入binding.pry到我的 ruby​​ 文件中。当我使用 Vim 时,我很想自动化它以避免每次都重新输入。我怎么能做到?

我想映射的确切顺序是:

  1. 插入新行。
  2. 插入binding.pry新创建的行。
  3. 返回正常模式。

编辑: binding.pry是我要粘贴的文本,而不是文件。

插入前:

a = 1
b = 2

插入后:

a = 1
binding.pry
b = 2
4

6 回答 6

27

录制宏(未经测试)

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>
于 2013-06-13T11:55:18.743 回答
13

Easyest 是从插入模式触发的缩写

:ia debug <CR>binding.pry

现在,当您键入 时debug,文本binding.pry将插入新行。

文档::help abbreviations

于 2013-06-13T12:13:40.827 回答
6

另一个映射是:

nnoremap <silent> gb :let a='binding.pry'\|put=a<cr>
于 2018-02-13T06:44:26.883 回答
4

根据Fredrik 的想法,您可以在您的 中定义和存储一个宏.vimrc,例如g

let @g = "Obinding.pry^["

请注意,键入您点击的转义字符CTRL-V然后ESC

然后您可以@g执行宏。


通常,如果要保存宏,一种简单的方法是记录宏,例如在 register 中q,然后执行"qpq宏名称在哪里)粘贴宏。然后用

let @x = "..."

您希望它始终拥有的宏名称在哪里x并将其放入.vimrc文件中。

于 2013-06-13T12:05:30.607 回答
1

我发现自己陷入了一个很大的困境。为了解决这个问题,我在我的 .vimrc 中放置了以下映射:

imap <C-b> binding.pry 
nnoremap <leader>bp O<% binding.pry %><esc>

第一个允许我在已经处于插入模式时插入 binding.pry。

第二个让我使用我的 leader+bp 在当前行上方放置一个 binding.pry。

于 2018-06-13T19:33:28.257 回答
1

您可以使用以下击键为此目的定义一个快捷方式

  1. :vsplit $MYVIMRC
  2. 一世
  3. nnoremap 生物绑定.pry<cr><esc>
  4. <esc>
  5. :w
  6. :source $MYVIMRC

解释

  1. 在一个新的垂直分割窗口中打开你的 vimrc
  2. 切换到插入模式
  3. 为快捷方式“bi”定义映射。
  4. 离开插入模式
  5. 保存更改
  6. 获取您的 vimrc 以使快捷方式可用

现在,当您处于正常模式时,击键 <b><i>(一个接一个键)将在当前行下的新行中插入“binding.pry”。

步骤 3 的说明:nnoremap 是用于映射击键以执行某些操作的命令。'bi' 是按键组合。您可以根据自己的需要进行调整。其余的是 VIM 上的正常编辑序列:

  • o - 在当前行下切换到插入模式
  • binding.pry<cr> - 是要写入的文本
  • <esc> - 按退出键退出插入模式。
于 2019-09-06T09:25:20.333 回答