2014-10-06 16 views
8

In Vim, mi piace la funzione che consente di inserire automaticamente commenti dopo aver avviato un blocco di commenti. Come faresti in modo che tu possa ottenere un carattere/i commenti dopo una nuova riga, ma dopo aver ottenuto una seconda nuova riga tale commento viene rimosso e si inizia una nuova riga senza un carattere di commento. Ciò sarebbe utile se stai lavorando su un blocco di commenti e non vuoi più fare commenti dopo (nel mio caso voglio anche applicare la stessa cosa agli elenchi di markdown, trattando */- come caratteri di commento).Vim: Rimuovi il carattere del commento dopo la doppia immissione

Per esempio

// typing a comment 
// (cursor here after hitting enter once) 

E

// typing a comment 

(cursor here after hitting enter twice) 

risposta

3

Questa mappatura controlla se la linea corrente contiene solo commento leader prima di decidere se lo fa <C-u> o <CR>:

inoremap <expr> <CR> getline(".") =~ '^\s*\(\*\|//\|#\|"\)\s*$' ? "\<C-u>" : "\<CR>" 
+0

ho messo nel mio vimrc e provo a digitare // poi invio Ottengo: 'E15: espressione non valida:^R = getline (".") = ~ '^ \ s * \ (\ * | // | # | "\) \ s * $'? "\^U": "\^M" ' – Keiga

+0

Lo stesso qui su Vim 7.2. Rimuovi ' =' per correggere E15. Non sono riuscito a ottenere la parte "o" dell'espressione, ma funziona per i miei scopi: 'inoremap getline (". ") = ~ '^ \ S * \ (# \) \ s * $'? "\ ": "\ " '(sarebbe bello se fosse integrato con la sintassi dei commenti della lingua) –

Problemi correlati