Wie kann ich in Vim schnell Wörter zitieren / nicht zitieren und Zitate (z. B. von '
nach "
) ändern ? Ich kenne das Surround.vim- Plugin, möchte aber nur Vim verwenden.
204
Wie kann ich in Vim schnell Wörter zitieren / nicht zitieren und Zitate (z. B. von '
nach "
) ändern ? Ich kenne das Surround.vim- Plugin, möchte aber nur Vim verwenden.
Antworten:
Surround.vim wird Ihre einfachste Antwort sein. Wenn Sie wirklich dagegen sind, finden Sie hier einige Beispiele dafür, was Sie tun können. Nicht unbedingt das effizienteste, aber deshalb wurde Surround.vim geschrieben.
ciw'Ctrl+r"'
ciw
- Löschen Sie das Wort, auf dem sich der Cursor befindet, und gelangen Sie in den Einfügemodus.'
- Fügen Sie das erste Zitat hinzu.Ctrl+r"
- Fügen Sie den Inhalt des"
Registers ein, auch bekannt als das letzte Ziehen / Löschen.'
- Fügen Sie das Schlusszitat hinzu.di'hPl2x
di'
- Löschen Sie das in einfache Anführungszeichen eingeschlossene Wort.hP
- Bewegen Sie den Cursor um eine Stelle nach links (über dem Eröffnungszitat) und setzen Sie den gerade gelöschten Text vor das Zitat.l
- Bewegen Sie den Cursor um eine Stelle nach rechts (über dem Eröffnungszitat).2x
- Löschen Sie die beiden Anführungszeichen.va':s/\%V'\%V/"/g
va'
- Wählen Sie das zitierte Wort und die Anführungszeichen visuell aus.:s/
- Starten Sie einen Ersatz.\%V'\%V
- Stimmen Sie nur mit einfachen Anführungszeichen überein, die sich innerhalb des visuell ausgewählten Bereichs befinden./"/g
- Ersetzen Sie sie alle durch doppelte Anführungszeichen.quelle
ciw
und nicht nurcw
? Ich finde das erste verwirrend und das zweite funktioniert gut.ciw
funktioniert unabhängig davon, wo sich Ihr Cursor im Wort befindet.cw
Funktioniert nur, wenn sich Ihr Cursor am Wortanfang befindet. Siehe:help iw
..
Befehl nicht funktioniert . Verwenden Sie, damit es funktioniertciw' Ctrl+r Ctrl+p"
. Dann.
verhält es sich so, wie Sie es für das folgende Wort wollen: Anstatt sich an den Inhalt des Registers zu erinnern, wird es sich daran erinnern, dass Sie alles wollen, was sich gerade im Register befindet (schwer zu erklären, aber wenn Sie beides versuchen, wird es offensichtlich :-))Es war einfacher für mich, es so zu machen
quelle
Hier sind einige Zuordnungen, die helfen könnten:
Wenn Sie die Mapleader-Variable nicht geändert haben, aktivieren Sie das Mapping mit
\q"
\q'
oder\qd
. Sie fügen ein doppeltes Anführungszeichen um das Wort unter dem Cursor, ein einfaches Anführungszeichen um das Wort unter dem Cursor und löschen alle Anführungszeichen um das Wort unter dem Cursor.quelle
map <Leader>' gewi'<Esc>A'<Esc>
meiner.vimrc
Datei hinzugefügt , um einfache Anführungszeichen von der aktuellen Position bis zum Ende der Zeile einzufügen. Das hat mir beim Konvertieren einiger MSDOS-Skripte in Bash geholfen.:vnoremap <leader>q c""<esc>P
.Zusätzlich zu den anderen Befehlen werden alle Wörter in einer Zeile in doppelte Anführungszeichen gesetzt (gemäß Ihrem Kommentar).
Wenn Sie die Anzahl der Backslashes reduzieren möchten, können Sie
\v
am Anfang des Musters einen (sehr magischen) Modifikator einfügenquelle
:s/\v([a-Z]+)/"\1"/g
Die Makrowege!
Drücken Sie qund qfür die Aufnahme in das q-Register (wir verwenden "q" als Verknüpfung, um "Anführungszeichen" zu speichern).
Drücken Sie shift+ und bbewegen Sie den Cursor vor das aktuelle Wort
Drücken Sie iTyp '(einfache Anführungszeichen)
Drücken Sie escdann und dann e, um zum Ende des Wortes zu gelangen
Drücken Sie und adann 'erneut, um das Wort mit Anführungszeichen zu umgeben.
Drücken Sie esc, um in den normalen Modus zu gelangen.
Drücken qSie schließlich , um es in das
q
Register aufzunehmen.Wie benutzt man
Sie können
step 4
mit allem ändern, was Sie möchten (eine Zeile, ein Wort, bis Sie ein Zeichen gefunden haben, usw.).Machen Sie das aufgezeichnete Makro dauerhaft
speichern und Beenden
Öffnen Sie Ihre Dateien, gehen Sie zu einigen Wörtern
@q
Wenn Sie es richtig machen, sollten magische Dinge in Ihren Worten erscheinen.
Sie können diese Schritte für andere Makros ausführen, die Sie geliebt haben.
quelle
@q w
und dann die nächstenn
Wörter mit Anführungszeichen umschließen, indem Sie with verwendenn@j
.Das Umschließen in einfache Anführungszeichen (zum Beispiel)
ciw'<C-r>"'<esc>
funktioniert, aber das Wiederholen funktioniert nicht. Versuchen:Dies setzt den Inhalt des Standardregisters "wörtlich". Jetzt können Sie
.
auf ein beliebiges Wort drücken , um es in Anführungszeichen zu setzen. Um mehr zu erfahren sehen:h[elp] i_ctrl-r
und mehr über Textobjekte an:h text-objects
Quelle: http://vimcasts.org/episodes/pasting-from-insert-mode/
quelle
ciw'<C-R><C-O>"'<Esc>
..
der Inhalt des letzten tatsächlichen Aufrufs neu geschrieben.Für Benutzer von VSCodeVim können Sie dies tun
vwS"
"
alles ersetzen, was Sie einwickeln möchten.w
jeden anderen Auswahloperator ersetzenquelle
viwS'
das Wort in einfache Anführungszeichen zu setzen. Mit Abstand am einfachsten.viwS"
Ich kenne keinen eingebauten vim-Befehl dafür, aber
r"f'r"
das Ändern von 'nach "undr'f"r'
von' nach 'funktioniert, wenn Sie auf dem ersten oder' stehen. Der Befehlr'
ersetzt jedes Zeichen unter Ihrem Cursor durch ','. undf"
bringt dich weiter zum nächsten ".quelle
'r
und"r
) können Sie einfach.
Und eingeben, wenn Sie weitere Anführungszeichen ändern möchten,;
und,
Sie zum nächsten oder vorherigen führen, während die letztef/F/t/T
Suche in dieselbe Richtung bzw. in die entgegengesetzte Richtung wiederholt wird .Zitate hinzufügen
Ich begann diese schnelle und schmutzige Funktion in meinem
.vimrc
:Jetzt wähle ich visuell aus, was ich will (normalerweise über
viw
- visuell innerhalb eines Wortes auswählen ) in Anführungszeichen und drücke Qfür doppelte Anführungszeichen oder drückeq für einfache Anführungszeichen.Zitate entfernen
Ich verwende vim-textobj-Anführungszeichen, damit vim Anführungszeichen als Textobjekte behandelt. Dies bedeutet, dass ich dies tun kann
vaq
(visuell um Anführungszeichen herum auswählen . Dies findet die nächsten Anführungszeichen und wählt sie visuell aus. (Dies ist optional, Sie können einfach so etwas tunf"vww
). Dann drücke ich, ums
zu entfernen die Anführungszeichen aus der Auswahl zu entfernen.Zitate ändern
KUSS. Ich entferne Anführungszeichen und füge dann Anführungszeichen hinzu . Um beispielsweise einfache Anführungszeichen durch doppelte Anführungszeichen zu ersetzen, würde ich die folgenden Schritte ausführen: 1. einfache Anführungszeichen entfernen :
vaqs
, 2. neue Anführungszeichen hinzufügen :vwQ
.quelle
Wenn Sie das vim-Plugin https://github.com/tpope/vim-surround verwenden (oder das VSCode Vim-Plugin verwenden, auf dem Vim-Surround vorinstalliert ist), ist es ziemlich praktisch!
hinzufügen
fallen
Veränderung
Es funktioniert sogar für HTML-Tags!
Weitere Beispiele finden Sie in der Readme-Datei auf Github
quelle
Hier sind einige einfache Zuordnungen, mit denen Sie ein Wort zitieren und nicht zitieren können:
quelle
qw
qd
wq
VIM für vscode macht es unglaublich. Es basiert auf einem Vim-Surround, wenn Sie keinen vscode verwenden.
quelle
Ich verwende nnoremap in meiner .vimrc
Um ein Wort einfach zu zitieren:
So entfernen Sie Anführungszeichen (funktioniert auch bei doppelten Anführungszeichen):
Zu beachtende Regel: 'sq' = einfaches Anführungszeichen.
quelle
Wie wäre es damit?
quelle
%
funktioniert es nur in der aktuellen Zeile, es sei denn, Sie haben die gesamte Datei ausgewähltIch habe ein Skript geschrieben, das dies tut:
Markieren Sie zur Verwendung einfach etwas, drücken Sie die Strg-Taste l und geben Sie ein Zeichen ein. Wenn es sich um eines der Zeichen handelt, die der Funktion bekannt sind, wird das richtige Abschlusszeichen bereitgestellt. Wenn dies nicht der Fall ist, wird auf beiden Seiten dasselbe Zeichen zum Einfügen verwendet.
Surround.vim kann mehr als nur das, aber das war ausreichend für meine Bedürfnisse.
quelle
Beispiel für eine Karte im visuellen Modus zum Hinzufügen einfacher Anführungszeichen um einen ausgewählten Textblock:
quelle