Ich benutze die a"
Bewegung ziemlich oft in vim; Beispiel: Verwenden Sie ca"
beim Refactoring eines Codeteils, um ein fest codiertes Argument durch einen Variablennamen zu ersetzen. Das Problem bei diesem Ansatz besteht darin, dass a"
führende Leerzeichen eingeschlossen werden, wenn kein nachfolgendes Leerzeichen vorhanden ist :
Alle nachfolgenden Leerzeichen sind enthalten, sofern keine vorhanden sind. Dann sind führende Leerzeichen enthalten.
Wenn ich also einen Funktionsaufruf wie folgt bearbeite:
aFunction(arg1, "toBeReplaced", arg3) #original
aFunction(arg1, replacedArg, arg3) #refactored
Ich muss das Leerzeichen vorher manuell neu einfügen, replacedArg
da es ca"
gelöscht wird.
Gibt es eine ähnliche Bewegung, die diesen Leerraum nicht enthält, oder gibt es noch etwas, das ich verwenden kann, anstatt ca"
dass ich einen zusätzlichen Raum eingeben muss?
Anmerkungen:
cf"
macht, was ich will, solange die Zeichenfolge keine maskierten Anführungszeichen enthält, aber ich muss den Cursor am Anfang der Zeichenfolge haben. Ich möchte etwas, das ich von überall in der Zeichenfolge verwenden kann und dessen?"<Enter>cf"
Eingabe ziemlich umständlich ist.- Es geht weniger um den einzelnen
<Space>
Tastendruck als vielmehr um die Tatsache, dass ich anfangs oft vergesse, das Leerzeichen einzuschließen, was mich mindestens vier zusätzliche Tastenanschläge (bi<Space><Esc>
) kostet und meinen Fokus unterbricht . Daher ist die Länge des Ersetzungsbefehls nicht so wichtig, solange er nur den Text zwischen den angegebenen Zeichen löscht und dann in den Einfügemodus wechselt.
quelle
?"<Enter>
in einer Zeile rückwärts nach einem Angebot zu suchen, können Sie es verwendenF"
.F
ist das gleiche wief
aber sucht nach links. Die folgenden Antworten sehen für Ihre Frage besser aus, sind jedochF
ein nützlicher Befehl für sich.Antworten:
Von /superuser/537453/vim-copy-quoted-string-without-whitespace : Verwenden Sie
2i"
anstelle vona"
. Siehe auch:help i'
.quelle
Es gibt in Wellles targets.vim Plugin. So zitieren Sie den relevanten Teil (innerhalb des Abschnitts " Ein Zitat "):
a' a" a
quelle
a"
undA"
für das ursprüngliche Verhalten verwendet?Alternativ können Sie ein Argument- / Parametertextobjekt verwenden. Jetzt hat Vim keine nativen Argumenttextobjekte, aber es gibt einige Plugins, die dies tun:
Persönlich benutze ich mein eigenes Plugin, argumentative.vim, aber ich habe gute Dinge über sideways.vim und targets.vim gehört.
quelle