我在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(-#)。
"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代码块的最优雅方式是什么?并进行了一些小的更改(更改了快捷键,并在#后面添加了空格)。
这是一个基于C-v的基本单线图,然后是上面概述的I方法。
此命令(:Comment)将所选字符串添加到任何选定行的开头。
command! -range -nargs=1 Comment :execute "'<,'>normal! <C-v>0I" . <f-args> . "<Esc><Esc>"
将这一行添加到.vimrc中,以创建一个接受单个参数的命令,并将该参数放置在当前选择的每一行的开头。
例如,如果选择了以下文本:
1
2
然后运行this::Comment//,结果将是:
//1
//2
视觉和Shift-I不适合我。
在没有任何插件的情况下工作最简单的是
选择块-V,然后选择j或k或任何相关运动(不要使用箭头键):)然后点击:它提示命令:“<,”>至注释使用#-`s/^/#/`使用`//`-`s/^/\/\//`取消注释使用#-`s/^#//`使用`//`-`s/^\/\//`
再平面化-
“<,”>-应用于视觉块
s-替代品
^-以开头
在/add字符#之后,在这种情况下,\/\/转义为//
使现代化
我编写了一个函数,用<Space><Space>注释和取消注释当前行
适用于接下来的10行,例如10<Space><Space>
将其粘贴到.vimrc
function CommentUncomment()
let line = getline('.')
if line[:1] == "//"
norm ^2x
else
norm I//
endif
endfunction
nnoremap <Space><Space> :call CommentUncomment()<CR>