我在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(-#)。


当前回答

你可以使用tpope的vim评论(https://github.com/tpope/vim-commentary)您可以按如下方式使用它:

按进入视觉模式

'v'

然后按

'j' repeatedly or e.g 4j to select 4 row

现在,您所要做的选择就是输入键:

'gc'

这将注释掉所有选择,以取消注释repead键:

'gc'

其他回答

前面有30个答案,我将尝试给出一个更简单的解决方案:在行的开头插入#。然后沿直线向下按点(.)。要重复,请执行j,。,j要取消注释,请删除#(可以在#上单击x),然后使用k、.、,。,等

如何取消注释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键时,所有选定的行都将获得指定的注释符号。

你可以使用tpope的vim评论(https://github.com/tpope/vim-commentary)您可以按如下方式使用它:

按进入视觉模式

'v'

然后按

'j' repeatedly or e.g 4j to select 4 row

现在,您所要做的选择就是输入键:

'gc'

这将注释掉所有选择,以取消注释repead键:

'gc'

我喜欢使用tcomment插件:http://www.vim.org/scripts/script.php?script_id=1173

我已经将gc和gcc映射为注释一行或高亮显示的代码块。它可以检测文件类型,工作非常好。

切换注释

如果你只需要切换评论,我宁愿使用commenttary.vim by tpope。

安装

病菌:

cd ~/.vim/bundle
git clone git://github.com/tpope/vim-commentary.git

vim插头:

Plug 'tpope/vim-commentary'

Vundle公司:

Plugin 'tpope/vim-commentary'

进一步定制

将其添加到.virc文件:noremap<leader>/:Comments<cr>

现在,您可以通过按Leader+/来切换评论,就像Sublime和Atom一样。