Come faccio a creare automaticamente le parentesi graffe corrispondenti in vim?
Dovrebbe funzionare come segue: se inserisco una parentesi aperta, quella di chiusura dovrebbe apparire automaticamente e il cursore dovrebbe essere posizionato tra. Per saltare fuori dalla coppia di controventi Ctrl-jviene utilizzata la combinazione .
Ci sono molti plugin che forniscono l'inserimento automatico di parentesi graffe. Ma loro
- utilizzare una combinazione di tasti diversa rispetto Ctrl-ja saltare fuori dalla coppia di controventi oppure
- interferire con le associazioni dei tasti UltiSnips .
Di seguito funziona come previsto
:inoremap ( ()<Esc>:let leavechar=")"<CR>i
:imap <C-j> <Esc>:exec "normal f" . leavechar<CR>a
Ma con queste impostazioni gli snippet di UltiSnips non funzionano più. Quindi ho usato UltiSnips per inserire la parentesi graffa di chiusura:
inoremap ( (<C-R>=UltiSnips_Anon('($1)$0', '(')<CR>
Questo funziona quasi. Viene inserito il tutore corrispondente e posso saltare quello di chiusura con Ctrl-j. Questo, tuttavia, funziona solo se c'è uno spazio davanti alla parentesi graffa aperta.
main () // works, the closing parentheses is added
main( // fails without a space
Le mie soluzioni richiedono un'associazione di tasti diversa per saltare sopra la parentesi graffa di chiusura o richiedere uno spazio davanti a quello aperto. Come risolvere questo?
Nota: ho usato le parentesi come esempio. Dovrebbe funzionare con parentesi, parentesi graffe, parentesi e segni meno di e non interferire con il plugin UltiSnips.
), rimapparec-ja quello potrebbe funzionare.