Verwenden von expand-region
Ich würde empfehlen, das expand-region
Paket zu installieren (auch auf Melpa verfügbar). Dies ist nützlich, um in Ihrem Beispiel erwähnte Situationen und vieles mehr zu bearbeiten.
expand-region
ist intelligent. Basierend auf dem Hauptmodus wird versucht, herauszufinden, was Sie auswählen möchten. Ich weiß nicht, aus welcher Sprache Sie das Beispiel-Snippet haben, daher werde ich Ihr Beispiel-Code-Snippet verwenden und es für Python leicht ändern (remove;). Meine folgende Erklärung bezieht sich also auf das folgende Codefragment in einem python-mode
Puffer.
ref = open('specific-file-name')
Wenn Punkt neben einem einfachen Anführungszeichen steht
Die schwarzen vertikalen Rechtecke unten zeigen an, wie der Cursor aussehen wird.
# point on left of left quote, the cursor is hiding the quote under it
ref = open(▮specific-file-name')
# point on left of right parenthesis, the cursor is hiding the parenthesis under it
ref = open('specific-file-name'▮
In jedem Fall, wenn Sie das tun M-x er/expand-region
, 'specific-file-name'
wird erhalten ausgewählt und Sie können dann getroffen DEL
(oder Backspace) um die Auswahl zu löschen.
Wenn Sie delete-selection-mode
aktiviert haben (ich möchte, dass dies persönlich aktiviert wird), können Sie nach der Auswahl mit dem Tippen beginnen. Dadurch wird die Auswahl überschrieben.
Wenn Sie er/expand-region
viel verwenden, würden Sie es natürlich an eine kurze Schlüsselbindung binden. Ich binde es gerne an C-\
. Also mit Punkt neben einem einzigen Zitat: C-\fname
werde ich gebenref = open(fname);
Wenn der Punkt irgendwo in den Anführungszeichen steht
Bei Verwendung expand-region
muss der Punkt nicht in der Nähe der Anführungszeichen liegen. In diesem Fall benötigen Sie jedoch nur noch wenige (normalerweise ein oder zwei weitere) Tastenanschläge.
Angenommen, die Cursorposition ist jetzt wie folgt:
# cursor shown below is hiding the i character under it
ref = open('specif▮c-file-name')
Verwenden Sie die gleiche Bindung wie oben:
- Das erste Mal, wenn ich drücke,
C-\
wird ausgewählt specific
.
Jetzt muss ich nur noch drücken \
, um die Auswahl ( expand-region
Funktion) zu erweitern. Das wird auswählen specific-file-name
.
Wenn Sie gebunden haben er/expand-region
, C-=
führt ein erneutes Schlagen =
die inkrementelle Erweiterung aus. Lesen Sie die Dokumentation zum Binden von Schlüsseln für die schrittweise Erweiterung / Kontraktion der Auswahl.
- Durch erneutes Schlagen
\
wird ausgewählt 'specific-file-name'
.
- Nun drücken Sie,
DEL
um die Auswahl zu löschen, und geben dann ein fname
. Wenn delete-selection-mode
aktiviert, können Sie den DEL
Strich überspringen .
Zusammenfassend sehen die delete-selection-mode
aktivierten Tastenanschläge bei aktiviertem Status wie folgt aus : C-\\\fname
.
Verwenden von change-inner
Ich bin auch auf ein change-inner
Paket des expand-region
Autors Magnars gestoßen (das expand-region
als Back-End verwendet wird), um genau das zu tun, was der Vim ci
tut (und auch das Äußere zu ändern ).
Aus dem Paket README:
change-inner
gibt dir vims ci
befehl und baut darauf auf expand-region
. Es lässt sich am einfachsten anhand eines Beispiels erklären:
function test() {
return "semantic kill";
}
Mit Punkt nach dem Wort Semantik
change-inner "
würde den Inhalt des Strings
change-outer "
töten würde den gesamten String
change-inner {
töten würde die return-Anweisung
change-outer {
töten würde den gesamten Block töten
ref = open(|'specific-file-name');
,C-M-k
wird gebenref = open(|);
. Zitate sind auch ausgewogene Sexps .