preservim / nerdcommenter

Vim plugin for intensely nerdy commenting powers
Creative Commons Zero v1.0 Universal
4.99k stars 445 forks source link

[Feature Request] Add in place commenting option #496

Open Masquue opened 2 years ago

Masquue commented 2 years ago

Add a new option NERDInplaceComment or something to enable reusing the space of existing leading whitespace for left delim, e.g:

def f():
  print('foo')
  print('bar')

to be commented as:

def f():
# print('foo')
  print('bar')

This feature preserves the original indentation in code, making them much clear especially for language such as python, which uses indentation to indicate block structure. (This is also the behavior of <C-/> in VS Code and other editors alike)

Something to note:

  1. this option may require or override or collaborate with NERDCommentBeforeLeadingWhitespace in #495
  2. if there is not enough leading whitespace, insert as many as required (possible extra space)
  3. What's the behavior if some of the lines to formatted has enough leading whitespaces and some don't? I'm in favor of reverting back to the original insert comment mode thus all indentations within the commented lines don't change, e.g.
    # reverting
    # def f():
    #   print('foo')
    #   print('bar')

    instead of

    # still replacing for print lines
    # def f():
    # print('foo')
    # print('bar')