Czy mogę wyłączyć kontynuację komentarzy do następnego wiersza w Vimie?

65

W Vimie, jeśli piszę komentarz w pliku kodu i trafiłem Enter, automatycznie powoduje to, że nowy wiersz jest także komentarzem.

Na przykład w pliku Ruby:

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

Ogólnie tego chcę, ale nie zawsze. Jak mogę tymczasowo wyłączyć to zachowanie automatycznego komentowania?

Nathan Long
źródło
Czy chcesz tymczasowo wykonać polecenie, które wykona je jednorazowo, czy też ustawić opcję, która będzie działać przez kilka poleceń, dopóki nie włączysz jej ponownie? Możliwy duplikat między witrynami: stackoverflow.com/questions/4896003/...
Ciro Santilli 22 改造 中心 法轮功 六四 事件

Odpowiedzi:

86

Myślę, że szukasz

:set formatoptions-=cro

Od :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
źródło
13
Dziękuję bardzo! To zachowanie mnie niepokoiło - przyszedłem z Uniksa VI do Linuksa vim. Dla googlerów: do stałego użytku patrz także stackoverflow.com/questions/6076592/... i wprowadź tę linię do / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15
Nie pomogło; pisanie /**<ESC>onadal dodaje gwiazdkę w następnym wierszu.
Qix
Nie działa z
felwithe
8

Tymczasowe ustawienie opcji „wklej” może robić, co chcesz, ale wyłącza również wiele innych funkcji Vima:

Użyj, :set pasteaby włączyć i :set nopastewyłączyć. Możesz też użyć go :set paste!do przełączania.

Zobacz też:

:help 'paste'
:help 'pastetoggle'

(Te polecenia są pisane za pomocą pojedynczych cudzysłowów).

Heptyt
źródło
4
:set pastewłączyć i :set nopastewyłączyć
Użytkownik
2
alternatywnie możesz użyć, :set paste!aby przełączyć PRAWDA i FAŁSZ
Felipe Alvarez
3

Wprowadzam niesformatowane zwykłe nowe linie za pomocą <CR>.

Kiedy chcę kontynuować wpisywanie następnego wiersza w komentarzowym bloku, po prostu używam Oklawisza jak zwykle.

Spróbuj tego:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>
Sebastian Jylanki
źródło
1
Co masz na myśli <CR>? Konkretny klucz?
Peter Mortensen
1
CR oznacza zwrot karetki. Na komputerach, z których korzystałem, został zamapowany na klawisz Enter.
Sebastian Jylanki
0

Skończyło się na tym:

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

Dodaje nowy wiersz, usuwa wszystko, co już tam wstawiono, i pozostawia kursor w trybie wstawiania w wciętej kolumnie, bez bałaganu z opcjami formatowania.

Ruben
źródło
0

Ta odpowiedź dotyczy Debiana i niektórych jego pochodnych.

W dystrybucji Debiana wartości domyślne Vima są nieuzasadnione. Są one zlokalizowane /usr/share/vim/vim80/defaults.vimi stosowane po /etc/vim/vimrcuruchomieniu (!) . Jedynym sposobem, aby powiedzieć Vimowi, aby nie używał ustawień domyślnych, jest upewnienie się, że ~/.vimrcistnieje, nawet jeśli jest pusty. Vim podczas uruchamiania próbuje czytać .vimrc, ale jeśli plik nie zostanie znaleziony, stosuje wartości domyślne, co powoduje wiele niepożądanych zachowań, np. Integrację myszy, dziwactwa kopiowania i wklejania, automatyczne zawijanie komentarzy itp.

W Debianie możesz naprawić WSZYSTKO, po prostu uruchamiając touch ~/.vimrc

oᴉɹǝɥɔ
źródło