Vim:如何在不移动光标的情况下取消或注释当前行?

3

我正在使用vim编辑一个文件,当前光标位于此行中间:

# foo bar baz foo bar baz foo bar baz foo bar baz 

使用JetBrains/PyCharm/VSCode,我可以使用Ctrl+/来在不移动光标的情况下取消/注释一行。在vim中是否也有这种操作方式?这里提供的方法并不能解决我的问题:What's a quick way to comment/uncomment lines in Vim?

这个类似的讨论可能对你有用。 https://dev59.com/wHI-5IYBdhLWcg3wxrqQ - Stun Brick
2个回答

2
您可能想使用一些插件,例如:Tim Pope的评论是一个基本功能的轻量级插件:https://vimawesome.com/plugin/commentary-vim “注释掉东西。”是Readme中的第一行。安装并运行commentary-vim后,导航到要注释的行(光标可以在行中间),然后按gcl注释该行并保持光标在原来的位置。在Python中,将插入# (哈希和空格),因此文本将向右移动2个位置,但光标将保持在原来的位置。再次使用gcl取消注释该行。
如果您想让插件做更多花哨的事情,请查看Nerd Commenter:https://vimawesome.com/plugin/the-nerd-commenter 您可能还想查看另一个轻量级插件:https://github.com/tomtom/tcomment_vim 如果您想避免安装插件,我建议您编写自定义键绑定/快捷方式。

0

警告:这并不优雅。它假设您想要删除的注释始终看起来像您问题中的那个。但它可以工作。

据我所知,这将作为宏或键绑定起作用。

mc02x`c2h
  1. mc 在当前位置设置名为“c”的标记
  2. 0 移动到行的开头
  3. 2x 删除它在那里找到的前两个字符
  4. `c 返回到第一步中创建的标记
  5. 2h 向左移动两个字符

这个链接提供了关于在该网站上格式化文本的很好的信息: https://meta.stackoverflow.com/questions/251361/how-do-i-format-my-code-blocks#:~:text=To%20use%20literal%20backticks%20at,yields%20the%20Perl%20%24%60%20operator. - Nox
尽管我的问题标题写着“取消注释”,但实际上在许多其他编辑器中实现的功能是使用相同的键进行注释/取消注释。我将更新我的问题标题以强调这一点。谢谢! - Udi
@Udi,那已经超出了我的技能水平。抱歉。我能做到的最接近的是添加键绑定以将Thomas Jensen的boxes实用程序集成到vim中。我喜欢那个工具,但我没有经常使用它的感觉,所以不想将其放入我的配置文件中。 - MDeBusk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接