Vim automatycznie wstawia komentarz, gdy rozpoczynam nowy wiersz od skomentowanej linii, ponieważ ustawiłem formatoptions=tcroql
. Na przykład (kursor jest *
):
// this is a comment*
i po uderzeniu <Enter>
(tryb wstawiania) lub o
(tryb normalny) pozostało mi:
// this is a comment
// *
Ta funkcja jest bardzo przydatna przy pisaniu długich komentarzy wieloliniowych, ale często po prostu chcę komentarza z jedną linią. Teraz, jeśli chcę zakończyć serię komentarzy, mam kilka opcji:
- trafienie
<Esc>S
- trafienie
<BS>
trzy razy
Oba zapewniają trzy naciśnięcia klawiszy, razem z <Enter>
Oznacza to cztery naciśnięcia klawiszy dla nowej linii, co uważam za zbyt wiele. Idealnie chciałbym po prostu trafić <Enter>
po raz drugi pozostanie z:
// this is a comment
*
Ważne jest, aby rozwiązanie działało również z różnymi poziomami wcięć, tj.
int main(void) {
// this is a comment*
}
trafienie <Enter>
int main(void) {
// this is a comment
// *
}
trafienie <Enter>
int main(void) {
// this is a comment
*
}
Myślę, że widziałem tę funkcję w jakimś edytorze tekstu kilka lat temu, ale nie pamiętam, który to był. Czy ktoś wie o rozwiązaniu, które zrobi to dla mnie w Vimie? Bardzo mile widziane są również wskazówki dotyczące właściwego toczenia własnego rozwiązania.
źródło
Odpowiedzi:
Spróbuj tego:
źródło
:h 'comment'
i:h format-comment'
.#
rubinu i"
vimscript jako dodatek do klasyki//
. Nie ma sensu robić nic dla*
komentarzy wielowierszowych w stylu C, ponieważ to musi zakończyć na*/
tak czy inaczej.<CR><CR>
można użyć do zakończenia komentarza wielowierszowego ...Rozszerzyłem odpowiedź @ romainl na pracę z dowolnymi językami, generując wyrażenie regularne z Vima
&commentstring
:Jednak nie mogę się zmienić
<CR>
w ogóle to nie zadziała. Na razie używam<CR><CR>
dopóki ten problem nie zostanie rozwiązany.źródło
<Esc>S
?<C-u>
robi to samo bez wychodzenia z trybu wstawiania. W każdym razie miałem funkcję niestandardową, która robiła kilka rzeczy<CR>
i zmienił nazwę naSmartEnter()
wczoraj po wysłaniu mojej odpowiedzi ;-). Również nie jestem pewien&commentstring
jest właściwym wyborem, ponieważ zazwyczaj zawiera tylko jedną formę i może być „linewise” lub „blockwise” (/*%s*/
w C,//%s
w Javascript itp.).Usuń r z opcji formatowania. To właśnie robi ta opcja. Wyłączenie go oznacza, że vim nigdy nie zrobi tego za ciebie, co oznacza, że będziesz musiał dodać wiodące znaczniki komentarza, kiedy rzeczywiście tego chcesz, ale to jest kompromis.
źródło