Vim ect文本块使用shift+←/→ 箭头键 您可以重复按下下面的删除键,就像常规的删除按钮一样

Vim ect文本块使用shift+←/→ 箭头键 您可以重复按下下面的删除键,就像常规的删除按钮一样,vim,comments,Vim,Comments,按d或x删除字符,必要时重复 我使用(在vim.org上找到) P>它使用C、C++、java、PHP(2345)、PRC、CSS、HTML、HTM、XML、XHTML、VIM、VIMRC、SQL、SH、KSH、CLSH、Perl、TEX、FORTRAN、ML、CAML、OCAML、VHDL、HASKEL和正常文件 它在正常和可视模式下在不同的源文件中添加注释和取消注释行 用法: CtrlC至注释一行 CtrlX至取消评论一行 切换TV并选择多行,然后点击Ctrl对所选多行进行注释 移动TV

  • 按d或x删除字符,必要时重复
  • 我使用(在vim.org上找到)

    <> P>它使用C、C++、java、PHP(2345)、PRC、CSS、HTML、HTM、XML、XHTML、VIM、VIMRC、SQL、SH、KSH、CLSH、Perl、TEX、FORTRAN、ML、CAML、OCAML、VHDL、HASKEL和正常文件

    它在正常和可视模式下在不同的源文件中添加注释和取消注释行

    用法:

    • CtrlC至注释一行
    • CtrlX至取消评论一行
    • 切换TV并选择多行,然后点击Ctrl对所选多行进行注释
    • 移动TV并选择多行,然后点击CtrlX取消对所选多行的注释

    指定要在vim中注释的行:

    #code code
    #code
    #code code code
    
    code code
    code
    code code code
    
    显示行号:

    :set number
    
    然后

    或者这个:

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

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

    #code code
    #code
    #code code code
    
    code code
    code
    code code code
    
    将光标放在左上角的
    #
    符号上,然后按CtrlV。这将使您处于可视块模式。按下向下箭头或J三次以选择所有三行。然后按D键。所有评论都消失了。要撤消,请按U

    如何评论vi中的以下三行:

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

    I//Esc

    这是一个大写的I,//和逃逸


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

    我使用Tim Pope的插件

    我把菲尔和jqno的答案结合起来,用空格作了不连贯的评论:

    autocmd FileType c,cpp,java,scala let b:comment_leader = '//'
    autocmd FileType sh,ruby,python   let b:comment_leader = '#'
    autocmd FileType conf,fstab       let b:comment_leader = '#'
    autocmd FileType tex              let b:comment_leader = '%'
    autocmd FileType mail             let b:comment_leader = '>'
    autocmd FileType vim              let b:comment_leader = '"'
    function! CommentToggle()
        execute ':silent! s/\([^ ]\)/' . escape(b:comment_leader,'\/') . ' \1/'
        execute ':silent! s/^\( *\)' . escape(b:comment_leader,'\/') . ' \?' . escape(b:comment_leader,'\/') . ' \?/\1/'
    endfunction
    map <F7> :call CommentToggle()<CR>
    
    autocmd文件类型c、cpp、java、scala let b:comment_leader='/'
    autocmd文件类型sh,ruby,python let b:comment_leader='#'
    autocmd文件类型conf,fstab let b:comment_leader='#'
    autocmd文件类型tex let b:comment_leader='%
    autocmd文件类型邮件let b:注释\u leader='>'
    autocmd文件类型vim let b:comment_leader='“'
    函数!CommentToggle()
    执行“:silent!s/\([^]\)/”。转义(b:注释\u领导人“\/”)。\1/'
    执行“:silent!s/^\(*\)”.转义(b:comment\u leader,\/').\?”.转义(b:comment\u leader,\/').\?/\1/'
    端功能
    映射:调用CommentToggle()
    
    工作原理:

    #code code
    #code
    #code code code
    
    code code
    code
    code code code
    
    假设我们使用#-注释

    第一个命令
    s/\([^]\)/\\1/
    搜索第一个非空格字符
    [^]
    ,并用
    +
    自身
    替换。自身替换由搜索模式中的
    \(..)
    和替换模式中的
    \1
    完成

    第二个命令
    s/^\(*\)\?\?\/\1/
    搜索以双注释开始的行
    ^\(*\)\?\?
    (注释之间接受0或1个空格),并用非注释部分
    \(*\)
    (表示前面相同数量的空格)


    有关vim模式的更多详细信息,请查看。

    有时我被扔进了一个远程盒子,我的插件和.vimrc无法帮助我,或者有时NerdCommenter搞错了(例如HTML中嵌入的JavaScript)

    在这些情况下,低技术替代方案是内置的
    norm
    命令,它只在指定范围内的每一行运行任意vim命令。例如:

    #
    进行评论:


    这将在每一行的开头插入“#”。请注意,当您键入时:范围将被填充,因此它看起来真的像
    :”我为我的.vimrc文件添加了一个简单的新文件,它工作得非常好,并且可以轻松扩展。您只需向注释映射及其注释引线添加一个新的文件类型

    我添加了一个到普通模式和视觉模式的映射,但是你可以重新映射到你喜欢的任何模式。我只喜欢有一个“切换”样式的函数。一个可以有多个映射等

    let s:comment_map = { 
        \   "c": '\/\/',
        \   "cpp": '\/\/',
        \   "go": '\/\/',
        \   "java": '\/\/',
        \   "javascript": '\/\/',
        \   "lua": '--',
        \   "scala": '\/\/',
        \   "php": '\/\/',
        \   "python": '#',
        \   "ruby": '#',
        \   "rust": '\/\/',
        \   "sh": '#',
        \   "desktop": '#',
        \   "fstab": '#',
        \   "conf": '#',
        \   "profile": '#',
        \   "bashrc": '#',
        \   "bash_profile": '#',
        \   "mail": '>',
        \   "eml": '>',
        \   "bat": 'REM',
        \   "ahk": ';',
        \   "vim": '"',
        \   "tex": '%',
        \ }
    
    function! ToggleComment()
        if has_key(s:comment_map, &filetype)
            let comment_leader = s:comment_map[&filetype]
            if getline('.') =~ "^\\s*" . comment_leader . " " 
                " Uncomment the line
                execute "silent s/^\\(\\s*\\)" . comment_leader . " /\\1/"
            else 
                if getline('.') =~ "^\\s*" . comment_leader
                    " Uncomment the line
                    execute "silent s/^\\(\\s*\\)" . comment_leader . "/\\1/"
                else
                    " Comment the line
                    execute "silent s/^\\(\\s*\\)/\\1" . comment_leader . " /"
                end
            end
        else
            echo "No comment leader found for filetype"
        end
    endfunction
    
    
    nnoremap <leader><Space> :call ToggleComment()<cr>
    vnoremap <leader><Space> :call ToggleComment()<cr>
    
    s:comment\u map={
    \“c”:“\/\/”,
    \“cpp”:“\/\/”,
    \“go”:“\/\/”,
    \“java”:“\/\/”,
    \“javascript”:“\/\/”,
    \“lua”:“---”,
    \“scala”:“\/\/”,
    \“php”:“\/\/”,
    \“python”:“#”,
    \“红宝石”:“#”,
    \“锈迹”:“\/\/”,
    \“sh”:“#”,
    \“桌面”:“#”,
    \“fstab”:“#”,
    \“conf”:“#”,
    \“简介”:“#”,
    \“bashrc”:“#”,
    \“bash_简介”:“#”,
    \“邮件”:“>”,
    \“eml”:“>”,
    \“蝙蝠”:“REM”,
    \“ahk”:“;”,
    \“vim”:“'”,
    \“tex”:“%”,
    \ }
    功能!ToggleComment()
    如果有\u键(s:comment\u映射和文件类型)
    让comment\u leader=s:comment\u映射[&filetype]
    如果getline('.')=~“^\\s*”。评论你的领导。" " 
    “取消对行的注释
    执行“静默s/^\\(\\s*\\)”。注释\u leader。“/\\1/”
    其他的
    如果getline('.')=~“^\\s*”。注释
    “取消对行的注释
    执行“静默s/^\\(\\s*\\)”。评论你的领导。"/\\1/"
    其他的
    “评论这句话
    执行“静默s/^\\(\\s*\\)/\\1”。注释\u leader。“/”
    结束
    结束
    其他的
    echo“未找到文件类型的注释引线”
    结束
    端功能
    nnoremap:calltogglecomment()调用
    vnoremap:calltogglecomment()调用
    
    注:


    我不在文件类型/加载中使用任何回调或挂钩,因为我发现它们比
    .vimrc
    静态函数/map更能减慢Vim的启动速度,但这只是我的偏好。我还尝试保持它的简单性和性能。如果使用自动命令,则需要确保将它们放入自动命令组或cal每次加载的文件都会多次将lback添加到文件类型中,这会导致性能下降。

    从这里的答案开始,我
    1. visually select the text as before (or type gv to re-select the previous selection)
    2. :norm x
    
    :norm ^x
    
    vnoremap <C-n> :norm
    
    let s:comment_map = { 
        \   "c": '\/\/',
        \   "cpp": '\/\/',
        \   "go": '\/\/',
        \   "java": '\/\/',
        \   "javascript": '\/\/',
        \   "lua": '--',
        \   "scala": '\/\/',
        \   "php": '\/\/',
        \   "python": '#',
        \   "ruby": '#',
        \   "rust": '\/\/',
        \   "sh": '#',
        \   "desktop": '#',
        \   "fstab": '#',
        \   "conf": '#',
        \   "profile": '#',
        \   "bashrc": '#',
        \   "bash_profile": '#',
        \   "mail": '>',
        \   "eml": '>',
        \   "bat": 'REM',
        \   "ahk": ';',
        \   "vim": '"',
        \   "tex": '%',
        \ }
    
    function! ToggleComment()
        if has_key(s:comment_map, &filetype)
            let comment_leader = s:comment_map[&filetype]
            if getline('.') =~ "^\\s*" . comment_leader . " " 
                " Uncomment the line
                execute "silent s/^\\(\\s*\\)" . comment_leader . " /\\1/"
            else 
                if getline('.') =~ "^\\s*" . comment_leader
                    " Uncomment the line
                    execute "silent s/^\\(\\s*\\)" . comment_leader . "/\\1/"
                else
                    " Comment the line
                    execute "silent s/^\\(\\s*\\)/\\1" . comment_leader . " /"
                end
            end
        else
            echo "No comment leader found for filetype"
        end
    endfunction
    
    
    nnoremap <leader><Space> :call ToggleComment()<cr>
    vnoremap <leader><Space> :call ToggleComment()<cr>
    
    " these lines are needed for ToggleComment()
    autocmd FileType c,cpp,java      let b:comment_leader = '//'
    autocmd FileType arduino         let b:comment_leader = '//'
    autocmd FileType sh,ruby,python  let b:comment_leader = '#'
    autocmd FileType zsh             let b:comment_leader = '#'
    autocmd FileType conf,fstab      let b:comment_leader = '#'
    autocmd FileType matlab,tex      let b:comment_leader = '%'
    autocmd FileType vim             let b:comment_leader = '"'
    
    " l:pos   --> cursor position
    " l:space --> how many spaces we will use b:comment_leader + ' '
    
    function! ToggleComment()
        if exists('b:comment_leader')
            let l:pos = col('.')
            let l:space = ( &ft =~ '\v(c|cpp|java|arduino)' ? '3' : '2' )
            if getline('.') =~ '\v(\s*|\t*)' .b:comment_leader
                let l:space -= ( getline('.') =~ '\v.*\zs' . b:comment_leader . '(\s+|\t+)@!' ?  1 : 0 )
                execute 'silent s,\v^(\s*|\t*)\zs' .b:comment_leader.'[ ]?,,g'
                let l:pos -= l:space
            else
                exec 'normal! 0i' .b:comment_leader .' '
                let l:pos += l:space
            endif
            call cursor(line("."), l:pos)
        else
            echo 'no comment leader found for filetype'
        end
    endfunction
    
    nnoremap <Leader>t :call ToggleComment()<CR>
    inoremap <Leader>t <C-o>:call ToggleComment()<CR>
    xnoremap <Leader>t :'<,'>call ToggleComment()<CR>
    
    map ) I# <Esc>j
    map ( k^2x
    
    map ) I//  <Esc>j
    map ( k^4x
    
    set cindent
    set formatoptions=tcqr
    
    'v'
    
    'j' repeatedly or e.g 4j to select 4 row
    
    'gc'
    
    'gc'
    
    nnoremap <silent> cc  :set opfunc=CommentOut<cr>g@
    vnoremap <silent> cc  :<c-u>call  CommentOut(visualmode(), 1)<cr>
    nnoremap <silent> cu  :set opfunc=Uncomment<cr>g@
    vnoremap <silent> cu  :<c-u>call  Uncomment(visualmode(), 1)<cr>
    
    function! CommentOut(type, ...)
      if a:0
        silent exe "normal!  :'<,'>s/^/#/\<cr>`<"
      else
        silent exe "normal!  :'[,']s/^/#/\<cr>'["
      endif
    endfunction
    
    function! Uncomment(type, ...)
      if a:0
        silent exe "normal!  :'<,'>s/^\\(\\s*\\)#/\\1/\<cr>`<"
      else
        silent exe "normal!  :'[,']s/^\\(\\s*\\)#/\\1/\<cr>`["
      endif
    endfunction
    
    cd ~/.vim/bundle
    git clone git://github.com/tpope/vim-commentary.git
    
    Plug 'tpope/vim-commentary'
    
    Plugin 'tpope/vim-commentary'
    
    command! -range -nargs=1 Comment :execute "'<,'>normal! <C-v>0I" . <f-args> . "<Esc><Esc>"
    
    1
    2
    
    //1
    //2
    
    let b:commentChar='//'
    autocmd BufNewFile,BufReadPost *.[ch]    let b:commentChar='//'
    autocmd BufNewFile,BufReadPost *.cpp    let b:commentChar='//'
    autocmd BufNewFile,BufReadPost *.py    let b:commentChar='#'
    autocmd BufNewFile,BufReadPost *.*sh    let b:commentChar='#'
    function! Docomment ()
      "make comments on all the lines we've grabbed
      execute '''<,''>s/^\s*/&'.escape(b:commentChar, '\/').' /e'
    endfunction
    function! Uncomment ()
      "uncomment on all our lines
      execute '''<,''>s/\v(^\s*)'.escape(b:commentChar, '\/').'\v\s*/\1/e'
    endfunction
    function! Comment ()
      "does the first line begin with a comment?
      let l:line=getpos("'<")[1]
      "if there's a match
      if match(getline(l:line), '^\s*'.b:commentChar)>-1
        call Uncomment()
      else
        call Docomment()
      endif
    endfunction
    vnoremap <silent> <C-r> :<C-u>call Comment()<cr><cr>
    
       # Practice in Vim
       # Practice in Vim
       # Practice in Vim
       # Practice in Vim
       # Practice in Vim
       # Practice in Vim
       # Practice in Vim
    
        Practice in Vim
        Practice in Vim
        Practice in Vim
        Practice in Vim
        Practice in Vim
        Practice in Vim
        Practice in Vim