9

NERDCommenter works like this by default:

//level1
    //level2
        //level3

How do I get to work like this?

//level1
//    level2
//        level3
alaferg
  • 233
  • 2
  • 10
roshanvid
  • 793
  • 6
  • 21

2 Answers2

11

From the documentation:

[count]<leader>cl  
[count]<leader>cb    |NERDComAlignedComment|  

Same as |NERDComComment| except that the delimiters are aligned down the left side (cl) or both sides (cb).

Rob Wouters
  • 15,797
  • 3
  • 42
  • 36
  • 4
    Is there a way to make that the "default"? i.e. make c align left. – simlmx Sep 19 '14 at 21:17
  • There is, but it involves changing 2 lines of the nerdcommenter code. I provided the details in a seperate answer. – Zakum Oct 17 '15 at 15:41
4

It is possible to change the default behaviour of ToggleComment (<leader>c<space>) to use left alignment. However this means changing two lines in $vimfiles/bundle/nerdcommenter/plugin/NERDCommenter.vim (assuming the usual pathogen setup for managing plugins).

Find the definition of function function s:CommentLinesToggle. As the first line add the following to determine the correct indentation index:

let leftAlignIndx = s:LeftMostIndx(a:forceNested, 0, a:firstLine, a:lastLine).

You can now use this index for setting the comment alignment. For this change the line:

let theLine = s:AddLeftDelim(s:Left({'space': 1}), theLine) to
let theLine = s:AddLeftDelimAligned(s:Left({'space': 1}), theLine, leftAlignIndx).

Done. Toggling comments now gives you:

for i in range(10):
    #if i / 2 == 0:
    #    print "Ciao"
print "finito"
Zakum
  • 2,157
  • 2
  • 22
  • 30