Can I disable continuation of comments to the next line in Vim?

69

22

In Vim, if I'm typing a comment in a code file, and I hit Enter, it automatically makes the newline a comment, too.

For instance, in a Ruby file:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Generally, this is what I want, but not always. How can I temporarily turn off this auto-commenting behavior?

Nathan Long

Posted 2011-04-14T21:44:57.223

Reputation: 20 371

I've seen it elsewhere but I'll add it here: "Whoever thought this was a good idea as a default should have their fingers broken." – user1683793 – 2019-12-16T18:57:12.350

By temporarily, do you want a a command that does it a single time, or set some option that will last for a few commands until you turn it back on? Possible cross site duplicate: http://stackoverflow.com/questions/4896003/how-do-i-stop-vim-from-auto-creating-comments-on-enter-press

– Ciro Santilli 新疆改造中心法轮功六四事件 – 2014-01-22T09:34:59.257

Answers

88

I think you're looking for

:set formatoptions-=cro

From :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.
...

Mike Seplowitz

Posted 2011-04-14T21:44:57.223

Reputation: 1 239

14

Thank you so much! This behavior was bothering me-- I came from unix vi to Linux vim. For googlers: For permanent use, see also http://stackoverflow.com/questions/6076592/vim-set-formatoptions-being-lost and enter this line into /etc/vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro

– bgStack15 – 2014-07-23T14:20:40.797

1Didn't help; typing /**<ESC>o still adds a star on the next line. – Qix - MONICA WAS MISTREATED – 2016-09-06T03:06:04.710

2Doesn't work. z – felwithe – 2019-09-19T12:06:15.953

9

Temporarily setting the 'paste' option may do what you want, but it also disables a lot of other Vim features:

Use :set paste to turn it on and :set nopaste to turn it off. Alternatively, you can use :set paste! to toggle it.

See also:

:help 'paste'
:help 'pastetoggle'

(Those commands are typed with the single-quotes.)

Heptite

Posted 2011-04-14T21:44:57.223

Reputation: 16 267

2alternatively you can use :set paste! to toggle it TRUE and FALSE – Felipe Alvarez – 2014-06-24T03:37:56.523

4:set paste to turn it on and :set nopaste to turn it off – User – 2014-05-23T01:55:01.197

3

I enter non-formatted plain new lines with <CR>.

When I want to continue typing the next line in the commented block I just use the O key as usual.

Try this:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>

Sebastian Jylanki

Posted 2011-04-14T21:44:57.223

Reputation: 151

1What do you mean by <CR>? A particular key? – Peter Mortensen – 2018-07-05T21:32:28.240

1CR stands for carriage return. On the computers I have used it has been mapped to the Enter key. – Sebastian Jylanki – 2018-07-06T02:15:57.467

0

I have ended up with this:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

It appends a new line, deletes everything already inserted there, and leaves the cursor in insert mode in the indented column, without messing with the format options.

Ruben

Posted 2011-04-14T21:44:57.223

Reputation: 101

0

This answer applies to Debian and some of its derivatives.

On a Debian distribution Vim defaults are unreasonable. They are located in /usr/share/vim/vim80/defaults.vim and applied after(!) /etc/vim/vimrc is run. The only way to tell Vim not to use its defaults is to ensure ~/.vimrc exists even if it is blank. Vim on startup tries to read from .vimrc, but if the file is not found it applies the defaults which brings a lot of undesirable behavior e.g. mouse integration, copy-paste quirks, comment auto-wrap, etc.

On Debian you can fix ALL that by simply running touch ~/.vimrc

oᴉɹǝɥɔ

Posted 2011-04-14T21:44:57.223

Reputation: 221

0

This just makes it one line command which when you run this, it will disable continuation of comment permanently

echo 'au FileType * set fo-=c fo-=r fo-=o' >> ~/.vimrc

grepit

Posted 2011-04-14T21:44:57.223

Reputation: 133