我在vi中打开了一个Ruby代码文件,其中有行注释为#:

class Search < ActiveRecord::Migration
  def self.up
    # create_table :searches do |t|
    #   t.integer :user_id
    #   t.string :name
    #   t.string :all_of
    #   t.string :any_of
    #   t.string :none_of
    #   t.string :exact_phrase
    # 
    #   t.timestamps
    # end
  end

  def self.down
    # drop_table :searches
  end
end

假设我想取消注释第一个定义中的所有行。。。端部。在Vim中有什么有效的方法可以做到这一点?

总的来说,我正在寻找一种简单、流畅的方式来注释和取消注释行。这里我处理的是Ruby代码,但可能是JavaScript(//)或Haml(-#)。


当前回答

我使用EnhancedCommentify。它评论了我所需要的一切(编程语言、脚本、配置文件)。我将其用于视觉模式绑定。只需选择要评论的文本,然后按co/cc/cd。

vmap co :call EnhancedCommentify('','guess')<CR>
vmap cc :call EnhancedCommentify('','comment')<CR>
vmap cd :call EnhancedCommentify('','decomment')<CR> 

其他回答

如何取消注释vi中的以下三行:

#code code
#code
#code code code

将光标放在左上角的#符号上,然后按CtrlV。这将使您进入视觉块模式。按下向下箭头或J三次以选择所有三条线。然后按D。所有评论都会消失。要撤消,请按U。

如何注释vi中的以下三行:

code code
code
code code code

将光标放在左上角的字符上,按CtrlV。这将使您进入视觉块模式。按↓ 或J三次以选择所有三条线。然后按:

I//Esc键

这是大写的I、//和Escape。

按ESC键时,所有选定的行都将获得指定的注释符号。

指定要在vim中注释的行:

显示行号:

:set number

然后

:5,17s/^/#/     this will comment out line 5-17

或者:

:%s/^/#/        will comment out all lines in file

我个人想评论一下Visual Studio。我在工作中已经习惯了它,以至于它占据了我的肌肉记忆(使用vsvim)。使用shift+v选择所需的行,然后按ctrl+k,ctrl+c进行注释,或按ctrl+k,ctrl+u取消注释。

:vnoremap <C-k><C-c> :norm i//<Cr>
:vnoremap <C-k><C-u> :s/\/\///g<Cr>:noh<Cr>

使用Control-V选择文本矩形:转到第一个#字符,键入Ctrl+V,向右移动一次,然后向下移动,直到注释结束。现在键入x:删除所有#字符,后跟一个空格。

我是这样做的:

转到要注释掉的第一行的第一个字符。在GVIM中按Ctrl+q或在VIM中按Ctrl+v,然后向下选择要注释的行上的第一个字符。然后按c,并添加注释字符。

解压缩的方式相同,只需键入空格而不是注释字符。