Was ist <buffer> verwendet für on vim Mapping? </buffer>

633
Dorsal6

Über den Befehl: help im Abschnitt Schlüsselzuordnung:

Wenn das erste Argument für einen dieser Befehle ist, wird <buffer>das Mapping nur im aktuellen Puffer wirksam.

Ich verstehe diese Definition nicht. Werden nicht alle Befehle auf den Puffer angewendet, an dem Sie gerade arbeiten? Es wird auch erwähnt, dass Sie dies verwenden könnten <buffer>, um dieselbe Befehlskombination verschiedenen Befehlen in verschiedenen Puffern zuzuordnen. Allein von daher würde ich denken, Sie würden es verwenden, wenn Sie während der Arbeit mit einer Datei etwas zuordnen wollten, sodass die anderen Puffer nicht betroffen sind. Ich bin verwirrt.

Um ein konkretes Beispiel zu geben, woher ich komme, ist im Folgenden ein Mapping zum Ausführen eines Python-Skripts mit F9, das ich bei Stack Overflow gefunden habe. Ich frage mich, was die Verwendung von <buffer>ist, da das Mapping ohne es gut zu funktionieren schien:

autocmd FileType python nnoremap <buffer> <F9> :!clear;python %<cr> 
2

1 Antwort auf die Frage

1
Heptite

Das bedeutet, dass das Mapping nur in dem Puffer existiert, in dem es definiert wurde. Wenn Sie zu einem anderen Puffer (einer anderen Datei) wechseln, funktioniert das Mapping dort nicht.

Ein Beispiel dafür, warum dies nützlich ist, gilt für Zuordnungen, die nur für bestimmte Dateitypen (in diesem Beispiel Python-Dateien) nützlich sind.

Normalerweise sind diese Zuordnungen in einem filetype pluginFormat definiert, das bei jedem Laden eines neuen Puffers dieses Dateityps verwendet wird.

Ich verstehe. Wenn das Pufferargument mehrere Puffer enthält und einer davon eine Python-Datei ist, funktioniert die Map ohne Rücksicht auf ihren Typ unabhängig von ihrem Typ. Vielen Dank. Dorsal6 vor 7 Jahren 0