tComment Vs. The NERD Commenter

ma11hew28 picture ma11hew28 · Jan 17, 2011 · Viewed 9.3k times · Source

I'm switching from TextMate to MacVim. Which should I use and why? tComment or The NERD Commenter

Answer

ISQ picture ISQ · Nov 24, 2012

I like style of tComment more than NERDCommenter, at least in Perl code.

Original:

 my $foo;
 if ($foo) {
     $foo = 1;
     $bar = 1;
 }
 return $bar;

tComment:

 my $foo;
 # if ($foo) {
 #     $foo = 1;
 #     $bar = 1;
 # }
 return $bar;

NERDCommenter:

 my $foo;
 #if ($foo) {
     #$foo = 1;
     #$bar = 1;
 #}
 return $bar;

I also like default mappings of tComment that feel more native for Vim. The basic are:

gc{motion}   :: Toggle comments
gcc          :: Toggle comment for the current line
gC{motion}   :: Comment region
gCc          :: Comment the current line 

I have added a few more mappings in vimrc and now I'm fully happy:

 " tComment extra mappings:
 " yank visual before toggle comment
 vmap gy ygvgc
 " yank and past visual before toggle comment
 vmap gyy ygvgc'>gp'.
 " yank line before toggle comment
 nmap gy yygcc
 " yank and paste line before toggle comment and remember position
 " it works both in normal and insert mode
 " Use :t-1 instead of yyP to preserve registers
 nmap gyy mz:t-1<cr>gCc`zmz
 imap gyy <esc>:t-1<cr>gCcgi

And one more mapping for consistency: gcc toggle comment line but gc toggle comment visual, so let's make it more consistent:

 vmap gcc gc