【问题标题】:Insert predefined text on keyboard shortcut在键盘快捷键上插入预定义文本
【发布时间】:2013-06-09 19:07:34
【问题描述】:

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

我想要映射的确切顺序是:

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

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

插入前:

a = 1
b = 2

插入后:

a = 1
binding.pry
b = 2

【问题讨论】:

  • 你的意思是插入文本“binding.pry”,还是插入文件binding.pry的内容?
  • 正如我在评论中所写的答案:这是一个文本 'binding.pry' 不是文件的内容。

标签: vim


【解决方案1】:

最简单的是从插入模式触发的缩写

:ia debug <CR>binding.pry

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

文档::help abbreviations

【讨论】:

  • 嗯,你需要进入插入模式并输入几个单词,所以这不是最简单的。
【解决方案2】:

为此,您可以使用以下击键定义快捷方式

  1. :vsplit $MYVIMRC
  2. nnoremap biobinding.pry
  3. :w
  4. :源 $MYVIMRC

说明

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

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

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

  • o - 在当前行下切换到插入模式
  • binding.pry - 是要写入的文本
  • - 按退出键退出插入模式。

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      另一个可以做的映射是:

      nnoremap <silent> gb :let a='binding.pry'\|put=a<cr>
      

      【讨论】:

        【解决方案5】:

        录制宏(未经测试)

        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>
        

        【讨论】:

        • 谢谢!一条评论:binding.pry 不是文件,而是我想粘贴的字符串。它应该更容易,对吗?
        • @mrzasa,跳过esc:r ... 步骤,直接替换为binding.pry
        • @FredrikPihl 如果我想添加obinding.pry
        【解决方案6】:

        基于Fredrik's idea,您可以在.vimrc 中定义和存储宏,例如g

        let @g = "Obinding.pry^["
        

        注意 type the escape character 你先按 CTRL-V 然后按 ESC

        然后您可以通过@g 执行宏。


        一般来说,如果要保存宏,一种简单的方法是记录宏,例如在寄存器q 中,然后执行"qp(其中q 是宏名称)来粘贴宏.然后用

        包围它
        let @x = "..."
        

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

        【讨论】:

        • 更多信息见Saving vim macros
        • 对于转义字符,这对我有用:在 Vim 插入模式中点击 ctrl+q 然后 ESC
        • 这是我正在使用的:let @b="obinding.pry^[0" 使用小写的 'o' 在当前行下方插入。使用 0(零)转到行首。
        猜你喜欢
        • 2012-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 2012-08-16
        相关资源
        最近更新 更多