【问题标题】:Insert character without entering insert mode?插入字符而不进入插入模式?
【发布时间】:2023-04-08 20:46:01
【问题描述】:

有时我想插入一个# 来注释掉一行并快速测试它。目前我这样做:

i#ESC:w

我可以做一些更短的事情吗?

【问题讨论】:

  • 有很多评论脚本。我用commentary.vim:github.com/tpope/vim-commentary
  • 正如其他人所说,您可能想尝试使用 cmets 插件。不过,更一般地说,如果您需要经常或重复执行一个简单的操作,则可以轻松创建映射或宏。
  • 在 2021 年使用 neovim 0.5,我在自述文件中制作了一些待办事项,并且我经常在 markdown 中有 - [ ] ,我想添加一个 x 来表示我已经完成了我的物品。所以我使用 r 进入替换字符模式,然后键入 x 来填充空字符(如果你愿意的话)似乎工作得很好。

标签: vim shortcut keymapping


【解决方案1】:

虽然我同意其他人的观点,有better ways to comment and uncomment code,但似乎人们已经分心并忘记了实际回答这个问题。

这是我插入单个字符的方法:

:noremap <key> i <Esc>r

如果我要更正拼写错误,我倾向于经常替换、删除或添加单个字符,因此(分别)rx 以及为&lt;key&gt; 选择的任何内容以上变得非常方便。

请注意,. 对于此类任务也特别方便。它重复上一个动作。

不过,就我个人而言,我只在执行一项我经常使用它以证明占据键盘上主要位置(例如更正拼写错误)的任务时才将此功能映射到一个有价值的键,因为实际上,它只会节省每次使用一次按键,并且仅当 &lt;key&gt; 不是组合时,这当然会限制可用性。

【讨论】:

  • 也许它只省了一个键击,但它也省去了切换模式的心理开销,这在 vim 中应该感觉很重要。
  • 此映射 doesn't work.
【解决方案2】:

我将一些东西映射到我的&lt;leader&gt; 键(默认为\):

" # comment the current line
nnoremap <leader>d I#<ESC>

" block comment in visual mode
vnoremap <leader>c <ESC>'<O/*<ESC>'>o*/<ESC>V'<k

如果您想在一组行的开头添加#,请执行以下操作:

  1. &lt;ctl-v&gt;
  2. j(根据需要多次
  3. I#
  4. &lt;esc&gt;

【讨论】:

    【解决方案3】:

    您可以使用录音。在正常模式下,键入:

    qlml0i#<press escape>`lq
    

    然后要注释掉一行,只需按@l

    【讨论】:

      【解决方案4】:

      在 vim 中映射非常简单,我可能会做类似的事情

      :nmap CC I#<Esc>:w<CR>
      

      在飞行中。如果我习惯了,我会把它添加到我的 vimrc 文件中。

      :help key-mapping
      :help usr_40.txt
      

      【讨论】:

        【解决方案5】:

        其实有一个插件你可能想看看:

        http://www.vim.org/scripts/script.php?script_id=1218

        它是专门为此目的而设计的。

        【讨论】:

          【解决方案6】:

          我特别喜欢tComment 插件。 gcc 注释一行,重复取消注释,多行,动作等。

          【讨论】:

            猜你喜欢
            • 2013-04-14
            • 1970-01-01
            • 2013-06-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-02
            • 2021-01-05
            • 1970-01-01
            相关资源
            最近更新 更多