vimrc - come bloccare il commento?


14

Non voglio commentare righe di testo in un file di testo o codice. Sto cercando di inserire commenti a blocchi in un file .vimrc . Per inserire un commento a riga singola ", ad esempio:

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

Ora ho una quantità relativamente grande di impostazioni / configurazioni / plugin raccolti negli anni dopo aver navigato su Internet per aggiungere funzionalità interessanti. Sto cercando di aggiungere alcuni blocchi di commenti di grandi dimensioni al mio file .vimrc. L'aggiunta "a ciascuna riga è un'opzione ma sto cercando una sintassi per i commenti a blocchi. Simile a /**/in C.

//è identico a "
/* */è identico a _ ____ ?

La ricerca in Unix.SE, SO e googling non ha aiutato molto.


1
Ho il sospetto che la funzione dei commenti multilinea non esista nei file vim-config.
Dilawar,

Risposte:


5

Non credo sia possibile. Il meglio che sarai in grado di fare è bloccare selezionare del testo ed eseguire una ricerca / sostituzione sul primo carattere s/^/"/in vim per inserire un "all'inizio di ogni riga.

Il plug-in Vim NERD Commenter potrebbe aiutare a semplificare anche questo.


1
Io uso la soluzione alternativa:, + 3s / ^ / "/ dove punto rappresenta la linea attuale e 3 rappresenta quantità di righe consecutive (dopo la linea di punti)..
Dago

6

La mia soluzione è racchiudere il codice all'interno di a function.

Questo funziona bene in vimrc, ad es. Per test di evidenziazione della sintassi ereditaria sul posto , che richiedono anche commenti di blocco reali senza caratteri iniziali. Nel mio vimrc, uso un blocco del genere direttamente dopo aver impostato i miei sintassi Heredoc .

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 

Questa soluzione è simile al if 0trucco di @ Stéphane , che non ha funzionato per me. Assicurati di non chiamare mai questa funzione!


1

Un trucco:

  • posiziona il cursore sul primo carattere della prima riga per commentare
  • premi Ctrl-V per entrare in modalità Visual Block
  • sposta il cursore verso il basso fino all'ultima riga per commentare
  • premere I (Maiusc + i) per accedere alla modalità di inserimento condizionale
  • premi '"' per commentare (una citazione e uno spazio)
  • premere Esc per uscire dalla modalità di inserimento

Tutte le linee selezionate sono ora anteposte dalla stringa digitata in modalità inserimento.


Grazie ma stavo cercando quello che è esattamente lo stile del commento a blocchi in vimrc .
mtk,

Non credo che ci sia una tale caratteristica in Vim. A proposito, non è così comune. In molti linguaggi di script, è più normale utilizzare i commenti a riga singola su un intervallo di righe.
Lgeorget,

1

Usa il tCommentplugin per Vim: http://www.vim.org/scripts/script.php?script_id=1173

Sì, supporta Python (aggiunto nel 2011).

descrizione: TComment funziona come un interruttore, ovvero commenterà il testo che contiene righe non commentate e decommenterà il testo già commentato (ovvero testo che non contiene righe non commentate).

Se il tipo di file è definito correttamente,: TComment scoprirà quale stringa di commento utilizzare in base ai valori di & commenttring o & commenti. Per alcuni tipi di file, la definizione del commento è definita in modo esplicito. Puoi | tcomment # DefineType () | per aggiungere le tue definizioni.

TComment sa come gestire il codice incorporato di un tipo di file diverso rispetto al tipo di file principale, ad esempio regioni ruby ​​/ python / perl negli script vim, HTML o JavaScript nel codice php ecc.

Come operatore (il prefisso può essere personalizzato tramite g: tcommentMapLeaderOp1 e g: 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 

Mappe di chiavi primarie:

<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 

Esiste anche un set secondario di mappe chiave con _ come leader (più preferibile sui terminali).


1

C'è questo plugin che cambia la vita tpopechiamatovim-commentary

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

Questo plugin fornisce :

  • salute mentale
  • Commenti correttamente rientrati
  • Non commenta le righe vuote / non necessarie

Utilizzo :

  • Installa tramite Vundle (o Pathogen immagino).
  • Evidenzia il tuo testo e premi :quale verrà visualizzato come:<,'>
  • Scrivi qui il commento :<,'>Commentarye premi Invio.
  • Bom. Il tuo amico fatto.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.