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


当前回答

我使用vim 7.4,这对我有用。假设我们正在注释/取消注释3行。

要注释:

如果行的开头没有制表符/空格:ctrl+V然后jjj然后shift+I(capital I)然后//然后esc esc如果该行的开头有制表符/空格,您仍然可以执行上述操作或替换为c:ctrl+V然后jjj然后c然后//然后esc esc取消注释:

如果行的开头没有制表符/空格:ctrl+V,然后jjj,然后ll(下限L),然后c

如果行的开头有制表符/空格,则将一个空格加上escctrl+V,然后jjj,然后ll(下限L),然后c,然后空格,然后esc

其他回答

:g/.spare[1-9].*/,+2s/^/\/\//

上面的代码将注释掉所有包含“备用”的行以及其后的一个数字,再加上它将从找到的行中注释两行。有关更多此类用途,请访问:http://vim.wikia.com/wiki/Search_and_replace#Details

"comment (cc) and uncomment (cu) code 
noremap   <silent> cc      :s,^\(\s*\)[^# \t]\@=,\1# ,e<CR>:nohls<CR>zvj
noremap   <silent> cu      :s,^\(\s*\)# \s\@!,\1,e<CR>:nohls<CR>zvj

可以使用#注释/取消注释单行或多行。要执行多行操作,请选择行,然后键入cc/cu快捷方式,或键入数字,然后键入cc/cu,例如7cc将注释光标中的7行。

我从Vim中注释/取消注释ruby代码块的最优雅方式是什么?并进行了一些小的更改(更改了快捷键,并在#后面添加了空格)。

tpope有一个改变生活的插件,叫做vim comments

https://github.com/tpope/vim-commentary

此插件提供:

神志正常正确缩进注释不注释空/不必要的行

用法:

通过Vundle(我猜是病原体)安装。突出显示文本并按:,将显示为:<,'>在此处键入注释:<,'>注释,然后按Enter键。繁荣你做的花蕾。

我使用Tim Pope的vim评论插件。

我使用vim多个光标。

要选择区域,请按0(它是零,而不是字母“o”)转到要注释掉的区域的第一行或最后一行的第一个字符。然后按V键并使用J、K或上下箭头键选择区域。然后按CtrlN将虚拟光标放在选择的每一行上。然后按I键同时编辑选择的每一行。