2014-01-23 27 views
23

Gibt es ein WORKING-Plugin für Vim 7.4, das automatisch Klammern ('{}', '[]', '()' schließt) und einige Zeilenumbrüche (für '{}' um am wenigsten)?Automatisch schließende Klammern für Vim

Ich weiß, dass diese Frage schon einige Male gestellt wurde, aber keine der Antworten scheint in vim 7.4 nicht zu funktionieren oder das Plugin wurde nicht aktualisiert oder so.

Bis jetzt habe ich versucht, vim-smartinput, autoclose und delimitmate und KEINE von diesen haben es geschafft, irgendwelche schließenden Zeichen einfügen, obwohl ich die Plugins aktiviert habe und sie sonst scheinen aktiv zu sein. Ich weiß nicht, ob es einige Änderungen in vim gegeben hat, die diese Plugins irgendwie kaputt machen. Keines dieser Plugins scheint zumindest in einem Jahr aktualisiert worden zu sein. Irgendwelche funktionierenden Lösungen, die mit vim 7.4 funktionieren würden?

+0

gibt es verschiedene "autoclose" -Plugins. versuchte das? https://github.com/Townk/vim-autoclose – Kent

+1

Wenn Sie eine Alternative möchten, sollten Sie Surround betrachten. Surround ist ein gutes Plugin, auch wenn du es in diesem Fall nicht verwendest. https://github.com/tpope/vim-surround –

+1

Surround ist ein fantastisches Plugin (wie vom Papst erwartet), aber ich würde kein Delimiter-Plugin dafür oder umgekehrt wegwerfen. Benutze beide :) – krystah

Antwort

3

Ich beantworte meine eigene Frage, weil ich herausgefunden habe, warum keines der Plugins für mich funktioniert. Es scheint, dass das Problem mit der mksession-Funktion in vim zusammenhängt, ich habe diese Plugins nur in einer gespeicherten Sitzung ausprobiert und aus irgendeinem Grund scheint das zu verhindern, dass die Plugins aus einem unbekannten Grund funktionieren. Die Plugins scheinen installiert zu sein und "funktionieren" gut (wie in den Befehlen vom Plugin gefunden etc.). Ohne eine gespeicherte Sitzung zu öffnen, hat zumindest delimitMate für mich funktioniert.

+0

Ich hatte einige Tastenbelegungen wie 'inoremap {{} kopiert, aber es funktionierte nicht. Problem war die Option ** set paste ** in meinem .vimrc. Entfernt es und es hat funktioniert! –

+0

Danke!kämpfte, um auch das automatische Schließen Arbeit zu machen, entfernte Satzpaste war der Unruhestifter – ozooner

2

xptemplate ist ein Snippet-Plugin, das eine Option zum automatischen Vervollständigen von Klammern/Klammern/etc enthält. Installieren Sie es und setzen

let g:xptemplate_brace_complete = '([{' 

in Ihrem .vimrc. Sie beginnen in der gleichen Zeile, aber wenn Sie Enter drücken, werden sie korrekt positioniert.

22

Geben Sie eine Stimme für delimitMate bevor wütende Mods die Frage schließen, um auf der Grundlage von Meinungen zu sein.

+0

(Das bedeutet, dass ich delimitMate für Vim 7.4 verwende, funktioniert out of the box). – krystah

+8

Oh, und ein Must-Have Keybind für mich, dass Sie vielleicht auschecken möchten: 'Inoremap { {} O'. Was es tut: Wenn Sie ein '{' einfügen und die Eingabetaste drücken, fügt es die schließende Klammer ein und platziert den Cursor auf einer neuen Linie zwischen dem Paar. – krystah

+0

Können Sie mir ein Beispiel für die Konfiguration oder etwas geben? Ich habe versucht, delimitMate, aber ich kann es nicht bekommen, ein einzelnes Zeichen irgendwo einzufügen. Ich habe versucht, loaded_delimitMate, delimitMate_autoclose und aufrufend: delimitMateSwitch (das sagt, dass delimitMate aktiviert/deaktiviert), aber egal, was ich nirgendwo eingefügten Zeichen bekomme. – Dago

32

Ich habe gerade ClosePairs getestet, AutoClose, DelimitMate und AutoClose in Vim 7.4.131 auf Ubuntu, Pathogen verwenden.

Nicht überraschend, alle von ihnen arbeiten.

Ihre Frage sollte umformuliert werden, da Sie nicht nach einem "auto-closing" -Plugin suchen, das in 7.4 funktioniert ... weil alle von ihnen das tun. Was Sie fragen sollten, ist "Hier ist mein Setup, wie kommt es, dass keines der" auto closing "Plugins für mich funktioniert?".

Eine Frage, die man beantworten könnte: "Es ist ein Durcheinander. Beginnen Sie damit, alles vor Zeile 95 zu kommentieren."

Auch Vim ist eine sehr stabile Umgebung: "nicht aktiv arbeiten" heißt nicht "nicht wert zu versuchen". Ganz im Gegenteil, eigentlich.

+0

Nun tut mir leid, die schlechte Frage Formulierung dann. Ich habe versucht, meine .vimrc zu diesem http://paste.dy.fi/PAj zu trimmen und habe alle Plugins erneut ausprobiert, aber nein, keine eingefügten Zeichen von ihnen. – Dago

+0

Denken Sie daran, vim zu schließen, damit Ihre Plugins geladen werden. –

+0

Dies ist eigentlich nicht wahr, zumindest beim Bearbeiten von JavaScript-Code. Jeder von diesen hat seine eigenen Probleme. – cnp

10

Hinzufügen eines neuen Kandidaten: Es gibt ein Plugin namens lexima. Es wurde im Oktober 2014 eingeführt, ist also ziemlich neu. Laut Autor bietet es eine hohe Anpassbarkeit und Punktreproduzierbarkeit. Es kann auch angepasst werden, um automatisch zu schließen def - end Paare wie in Ruby.

Hier ist the presentation des Autors in der in Japan gehalten, die verschiedene Möglichkeiten vergleicht, um automatische Schließfunktionen zu erreichen.

+1

Wow. Dieser ist eine nette Ergänzung zu der Liste. Besser als die meisten anderen Plugins :) – shivams

+0

Sehr schön - war genau das für eine lange Zeit suchen – Jivan

38

Für diejenigen von uns, die eine Vanille vim wollen:

ino " ""<left> 
ino ' ''<left> 
ino (()<left> 
ino [ []<left> 
ino { {}<left> 
ino {<CR> {<CR>}<ESC>O 
ino {;<CR> {<CR>};<ESC>O 

Diese autocompletes in insert Modus, sofern set paste nicht gesetzt ist. Halten Sie es in der vimrc zu vermeiden es die Eingabe jedes Mal und wenn wir nicht die Zuordnung wollen, müssen wir es entkommen mit ctrl + v vor den abgebildeten Zeichen eingeben wie ({ usw.

+3

Arbeit wie ein Zauber in meinem Vim 8.0 –