Durante la modifica dei file .scm
sarebbe bello se Vim inserisse automaticamente la parentesi graffa )
non appena inizio (
. Come faccio a fare questo?Come posso ottenere Vim per mettere automaticamente le parentesi graffe?
risposta
È possibile mappare la coppia di apertura a proprio piacimento:
:imap (()<left>
Provare a usare AutoClose plugin.
Da non confondere con l'altro, meno aggressivo (e meno fastidioso, IMO), [AutoClose] (http: //www.vim. org/scripts/script.php? script_id = 2009) di Thiago Alves. –
@AndrewMarshall +1, la versione elencata è molto meno fastidiosa. Sono venuto qui cercando un'alternativa a quella nella risposta di Mykola a causa delle sue stranezze. –
FYI, Questo plugin sembra funzionare bene ma per me ha introdotto il comportamento "laggy" '
Ci sono molti suggerimenti e plugin sull'argomento. Dai uno sguardo allo relevant entry nel sito di vimtips.
avevo bisogno di uno troppo, e ho già provato alcuni dei plug-in:
AutoClose, http://www.vim.org/scripts/script.php?script_id=1849, è un po 'aggressivo.
coppie semplici, http://www.vim.org/scripts/script.php?script_id=2339, dipende da Python. Se sei su Linux non è un problema, ma su Windows può essere un problema abbinare la versione di Vim all'interprete Python che hai.
Il mio consiglio sarebbe ClosePairs, che potete trovare a http://www.vim.org/scripts/script.php?script_id=2373 che ha funzionato perfettamente per me. È semplice e utile
C'è un problema con l'utilizzo di questo (tramite l'imap o uno degli script). Non sarà possibile ripetere la modifica completa utilizzando il comando .
.
e.g. (foo) with . only gets you foo, without the brackets.
Funziona bene se si inserisce le staffe normalmente, come due caratteri.
Si può provare a scaricare il seguente plug AutoClose : Inserts matching bracket, paren, brace or quote
Dai un'occhiata a questo nuovo plugin: vim-autoclose by Townk. Il già citato AutoClose era aggressivo, a volte comportandosi in modo indesiderato.
La risposta più semplice è includere una mappa. Ad esempio .:
:inoremap (()<left>
Il problema è che si avrebbe bisogno di aggiungere una voce per ogni simbolo che si desidera automaticamente chiuso ('{', '[', '"', etc). Inoltre, i plugin sono normalmente più intelligenti, fornendo cose come rilevare il carattere "chiusura" e non ripeterlo.
il problema con la soluzione di cui sopra e maggior plugin, è che essi tendono rompere la sequenza di annullamento (gundo chiunque?), come spiegato in :help ins-special-special .
Ecco la lista dei plugin che fa quello che si chiede (da vimtips):
- delimitMate da Israele Chauca Fuentes (configurabile, e non si rompe undo/redo/ripetere, ma - rompere iabbr) anche su GitHub
- AutoClose da Karl Guertin (auto-chiude caratteri hard-coded specifici, ma non si rompe undo/redo/ripetizione)
- AutoClose di Thiago Alves (configurabile, ma si rompe undo/redo/ripetizione)
- auto-pairs Pairs Auto di Miao Jiang (configurabile, ma si rompe undo/redo/ripetizione)
- ClosePairs di Edoardo Vacchi (configurabile, ma si rompe undo/redo/ripetizione)
- smartinput da Kana Natsuno (configurabile, ma si rompe undo/redo/repeat)
Inoltre vimtips, c'è another nice explanation of the issue sul web.
Per chiunque altro lo trovi in futuro, ho appena iniziato a utilizzare coppie di auto e, a meno che non comprenda la terminologia errata, non ha infranto il mio annullamento o la cronologia. Il migliore di questa lista! Gestisce anche l'eliminazione di coppie su backspace! – Lethjakman
Quale versione di Vim? L'ultima volta che ho controllato non c'era ancora una soluzione che permettesse di annullare/ripetere/ripetere il lavoro correttamente con la chiusura automatica in Vim 7.4 e successivi. Alcuni plug-in hanno avuto un attacco usando setline() che ha funzionato nelle precedenti versioni di Vim. – Ben
https://github.com/vim-scripts/Auto-Pairs
Testato questo plugin per undu rifare. 2013 Funziona. Anche con plugin in modalità python.
Attualmente sto usando auto-pairs e funziona abbastanza bene.
I problemi del plugin che interrompono undo/redo/repeat sembrano persistere tra alcuni dei plug-in elencati sopra, ma non penso che sia un gran problema (beh, almeno non per me al momento).
Solo un avvertimento però, non ero in grado di utilizzare: helptags per generare il file di aiuto con questo plugin come al momento di scrivere questo.
C'è un nuovo plugin per cohama:
lexima.vim
(github)
(non ancora in vim.org)
Questo plugin supporta il comando .
!
Afaik, questo è l'unico plugin che supporta questo.
Anche la sequenza di annullamento/ripetizione funziona.
- 1. Come trovi e sostituisci le parentesi graffe {} in vim?
- 2. Come impostare le parentesi graffe "/ parentesi"/parentesi quadre/operatori aritmetici per evidenziare il colore in VIM?
- 3. Vim plug-in per parentesi 'chiuso automaticamente'?
- 4. Blocchi - parentesi graffe/senza parentesi graffe?
- 5. Swift standard industriale per le parentesi graffe
- 6. Come chiudere le parentesi graffe in PHP
- 7. Precisione di parentesi graffe
- 8. Ottenere tutte le occorrenze di parole tra parentesi graffe
- 9. Quando posso omettere le parentesi graffe in C?
- 10. Posso inizializzare una collezione immutable BCL usando le parentesi graffe?
- 11. Chiusura automatica delle parentesi graffe in Emacs?
- 12. Sostituire le virgole racchiuse tra parentesi graffe
- 13. Sostituzione corrispondenti {} parentesi graffe con do/fine a Vim (Ruby)
- 14. Chiamare ctor con le parentesi graffe
- 15. Parentesi graffe di supporto
- 16. Impostazione del tema del colore vim per le parentesi graffe evidenziate
- 17. Cosa significano le parentesi graffe in JavaScript?
- 18. Cosa significano le parentesi graffe in Verilog?
- 19. Le parentesi graffe sono usate in Lua?
- 20. Cosa significano parentesi graffe/parentesi graffe vuote in Java?
- 21. Eclipse e parentesi graffe
- 22. Sfuggire le doppie parentesi graffe {{}} nei modelli Swig per AngularJS
- 23. PCRE regex per rimuovere le parentesi graffe vuote
- 24. Come rimuovere le parentesi graffe nella stringa Java?
- 25. Regex con espressione ricorsiva per abbinare le parentesi graffe nidificate?
- 26. Cosa significa parentesi dopo parentesi graffe?
- 27. parentesi graffe per la matematica in LaTeX
- 28. Nascondi parentesi graffe in C#
- 29. Capire l'utilizzo delle parentesi graffe
- 30. Parentesi graffe attorno al testo?
I plug-in menzionati nelle altre risposte hanno il vantaggio di comportarsi in modo "intelligente" quando si digita la chiusura corrispondente ")". Se questo non è necessario, allora andrei anche con la mappa forward straigt. – user55400
Alcuni plugin anche: - non espandersi all'interno di contesti di commenti e stringhe, - definire un modo per circondare la selezione con una coppia di parentesi, - inserire un segnaposto/marcatore per saltare oltre la parentesi di chiusura (che è coerente con la maggior parte plug-in di espansione di snippet/template). –
C'è un modo per farlo solo alla fine di una linea? A volte è più fastidioso che utile ma con questo, lo userei volentieri ... – alexpinho98