vimrc - jak zablokować komentarz?

14

Nie chcę komentować wierszy tekstu w pliku tekstowym lub kodzie. Szukam wstawienia komentarzy do bloku w pliku .vimrc . Do wstawienia komentarza w jednym wierszu "służy na przykład:

" remove spaces and tabs as well  at the end of line automatically while saving
autocmd BufWritePre * :%s/\s\+$//e

Teraz mam stosunkowo dużo ustawień / konfiguracji / wtyczek zebranych przez lata po przeglądaniu Internetu, aby dodać fajne funkcje. Chcę dodać duże bloki komentarzy do mojego pliku .vimrc. Dodanie "do każdej linii jest opcją, ale szukam składni komentarza do bloku. Podobnie jak /**/w C.

//jest identyczny z "
/* */jest identyczny z _ ____ ?

Przeszukiwanie Unix.SE, SO i googling niewiele pomogło.

Mtk
źródło
1
Podejrzewam, że funkcja komentarzy wieloliniowych nie istnieje w plikach vim-config.
Dilawar

Odpowiedzi:

5

Nie sądzę, żeby to było możliwe. Najlepsze, co możesz zrobić, to zablokować zaznaczenie tekstu i wyszukać / zamienić pierwszy znak s/^/"/w vimie, aby wstawić znak "na początku każdej linii.

Wtyczka VER NERD Commenter może również ułatwić to.

slm
źródło
1
Używam obejścia:., + 3s / ^ / "/ gdzie kropka reprezentuje bieżącą linię, a +3 reprezentuje ilość kolejnych (po linii kropek) linii.
daGo
6

Moim rozwiązaniem jest zawinięcie kodu w function.

Działa to dobrze w vimrc, np. W testach podświetlania składni heredoc w miejscu , które również wymagają prawdziwych komentarzy blokowych bez wiodących znaków. W moim vimrc używam takiego bloku bezpośrednio po skonfigurowaniu moich heredoc SyntaxRanges .

function! _blockcomment()

    " free text comment
    You can write free text here,
    but vim will try to highlight it as vimscript!

    " markdown heredoc
    test <<MD
    ### Nevertheless ###
    * for testing my fuzzy SyntaxRange heredocs
    * having no leading chars is essential
    * and the blockcomment function does the trick
    MD  

endfunction 

To rozwiązanie jest podobne do if 0sztuczki @ Stéphane , która dla mnie nie zadziałała. Pamiętaj tylko, aby nigdy nie wywoływać tej funkcji!

Juve
źródło
1

Jedna sztuczka:

  • umieść kursor na pierwszym znaku pierwszego wiersza, aby skomentować
  • naciśnij Ctrl-V, aby wejść w tryb Visual Block
  • przesuwaj kursor w dół, aż do ostatniej linii do komentarza
  • naciśnij I (shift + i), aby wejść w tryb wstawiania warunkowego
  • naciśnij „”, aby skomentować (cytat i spacja)
  • naciśnij klawisz Esc, aby wyjść z trybu wstawiania

Wszystkie wybrane linie są teraz poprzedzone ciągiem, który wpisałeś w trybie wstawiania.

lgeorget
źródło
Dzięki, ale szukałem dokładnie tego, co jest stylem komentarzy blokowych w vimrc .
Mt
Nie wydaje mi się, żeby vim miał taką funkcję. Nawiasem mówiąc, to nie jest tak powszechne. W wielu językach skryptowych zwykle stosuje się komentarze jednowierszowe w szeregu wierszy.
lgeorget
1

Użyj tCommentwtyczki dla Vima: http://www.vim.org/scripts/script.php?script_id=1173

Tak, obsługuje Python (dodany w 2011 roku).

opis: TComment działa jak przełącznik, tzn. będzie komentował tekst zawierający niepomocowane linie i odkomentował już skomentowany tekst (tj. tekst, który nie zawiera niepomocowanych linii).

Jeśli typ pliku jest poprawnie zdefiniowany: TComment ustali, który ciąg komentarza użyć na podstawie wartości & komentarza lub & komentarzy. W przypadku niektórych typów plików definicja komentarza jest wyraźnie zdefiniowana. Możesz | tcomment # DefineType () | aby dodać własne definicje.

TComment wie, jak postępować z kodem osadzonym innego typu pliku niż główny, np. Regiony ruby ​​/ python / perl w skryptach vim, HTML lub JavaScript w kodzie php itp.

Jako operator (prefiks można dostosować za pomocą g: tcommentMapLeaderOp1 ig: tcommentMapLeaderOp2):

gc{motion}   :: Toggle comments (for small comments within one line 
                the &filetype_inline style will be used, if 
                defined) 
gcc          :: Toggle comment for the current line 
gC{motion}   :: Comment region 
gCc          :: Comment the current line 

Podstawowe mapy kluczy:

<c-_><c-_>   :: :TComment 
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END> 
<c-_>b       :: :TCommentBlock 
<c-_>a       :: :TCommentAs <QUERY COMMENT TYPE> 
<c-_>n       :: :TCommentAs &filetype <QUERY COUNT> 
<c-_>s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE> 
<c-_>i       :: :TCommentInline 
<c-_>r       :: :TCommentRight 
<c-_>p       :: Comment the current inner paragraph 

Istnieje również drugi zestaw kluczowych map z _ jako liderem (bardziej preferowany na terminalach).

laebshade
źródło
1

Istnieje ta wtyczka zmieniająca życie o tpopenazwievim-commentary

https://github.com/tpope/vim-commentary

Ta wtyczka zapewnia :

  • Zdrowie psychiczne
  • Właściwie wcięte komentarze
  • Nie komentuje pustych / niepotrzebnych wierszy

Zastosowanie :

  • Zainstaluj przez Vundle (lub, jak sądzę, Pathogen).
  • Podświetl swój tekst i naciśnij, :który pokaże się jako:<,'>
  • Wpisz tutaj Komentarz :<,'>Commentaryi naciśnij klawisz Enter.
  • Bom. Twoja skończona bud.
Weston Ganger
źródło