在" .ttl"中注释和取消注释多行的功能文件

时间:2015-07-23 03:23:39

标签: vim

我正在尝试在.vimrc中编写一些函数来评论和取消注释我的代码文件。我的程序成功运行,但.ttl个文件除外。

我使用的功能如下:

 " Add comment and uncomment
map qq :call Comment()<CR>
map ww :call Uncomment()<CR>

function! Comment()
    let ft = &filetype
    if ft == 'php' || ft == 'ruby' || ft == 'sh' || ft == 'make' || ft == 'python' || ft == 'perl'
            silent s/^/\#/
    elseif ft == 'c' || ft == 'cpp' || ft == 'java' || ft == 'javascript' || ft == 'go'
            silent s:^:\/\/:g
    elseif ft == 'ttl'
            silent s/^/;//
    elseif ft == 'vim'
            silent s:^:\":g
    endif
endfunction

function! Uncomment()
    let ft = &filetype
    if ft == 'php' || ft == 'ruby' || ft == 'sh' || ft == 'make' || ft == 'python' || ft == 'perl'
            silent s/^\#//
    elseif ft == 'c' || ft == 'cpp' || ft == 'java' || ft == 'javascript' || ft == 'go'
            silent s:^\/\/::g
    elseif ft == 'ttl'
            silent s/^\;/
    elseif ft == 'vim'
            silent s:^\"::g
    endif
endfunction

3 个答案:

答案 0 :(得分:1)

删除最后一个斜杠:silent s/^/;/,它会起作用。顺便说一句,lots of plugins已经做了同样的事情。但是,如果您仍想编写自己的脚本,我建议您检查:he commentstringuse only nonrecursive mappings,即nnoremap,而不仅仅是map

答案 1 :(得分:0)

正如Andy Rk所提到的,有些插件可以做到:如果你没有创建  这些用于学习目的的功能,使用插件可以为您节省很多  工作。

我个人使用NERDCommenter 这真的很好我认为值得一看:

  • 安装非常简单:如果您只是使用插件管理器 必须在.vimrc中添加一行。 (例如vim-plug 只需将Plug 'godlygeek/tabular'添加到.vimrc,然后运行:PlugInstall即可 它准备好了。

  • 支持大量文件类型:该插件适用于300多种类型 开箱即用的文件。想想让所有人都能拯救你。

  • 行为非常明智:可能有很多不同的行为, 例如,使用.c文件,您可以用不同的方式评论选择, 只需在视觉上选择一行代码并查看结果:

  • + C + C

/*int main()*/
/*{*/
    /*printf("Hello World");*/
    /*return 0;*/
/*}*/
  • + C +
/*int main()
{
    printf("Hello World");
    return 0;
}*/
  • + C + 取值
/*
 *int main()
 *{
 *    printf("Hello World");
 *    return 0;
 *}
 */

许多其他选项可用,如中所述 README

如果您不喜欢视觉选择,也可以使用前缀[count]mapping 将操作应用到光标后的[count]行。

您也可以简单地取消注释任何注释行 + C + û

也许你应该试一试,看看你是否还需要编写自定义函数。

答案 2 :(得分:0)

站在巨人的肩膀上

我强烈建议您评论commentary(我使用的)插件,Nerd CommenterEnhCommentifytComment,...,etc。使用插件并不羞耻。特别是因为评论翻转看起来比预期更复杂。

自定义Commentary.vim

只需将'commentstring'设置为您的文件类型的评论样式即可。如果Vim识别您的文件类型,通常会为您设置。请参阅:h 'commentstring'

更改php 'commentstring'的示例。将以下内容添加到~/.vim/after/ftplugin/php.vim

set commentstring=#\ %s

注意:我使用评论这可能不适用于其他评论插件。一如既往,请阅读文档。

更多信息

:h 'commentstring'
:h :set
:h filetype
:h new-filetype
:h ftdetect
:h ftplugins
:h after-directory