Что такое <buffer> используется для отображения на Vim? </buffer>

482
Dorsal6

Из команды: help, в разделе сопоставления клавиш:

Если первым аргументом одной из этих команд является <buffer>сопоставление, оно будет действовать только в текущем буфере.

Я не понимаю это определение. Разве все команды не применяются к буферу, над которым вы работаете? Также упоминается, что вы можете использовать это <buffer>для сопоставления одной и той же комбинации клавиш с разными командами в разных буферах. Исходя из этого, я думаю, что вы использовали бы это, если бы вы хотели отобразить что-то, когда вы работаете с файлом, чтобы это не повлияло на другие буферы? Я не совсем понимаю.

Чтобы дать конкретный пример того, откуда я пришел, ниже приведено сопоставление для запуска сценария Python с F9, которое я нашел в Stack Overflow. Я подвергаю сомнению, в чем польза <buffer>, поскольку отображение, казалось, прекрасно работало без него:

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

1 ответ на вопрос

1
Heptite

Это означает, что отображение существует только в буфере, где оно было определено. Если вы переключаетесь на другой буфер (файл), отображение там не работает (не существует).

Одним из примеров того, почему это полезно, являются сопоставления, которые полезны только для определенных типов файлов (в этом примере, файлов Python).

Обычно эти отображения определяются в объекте, filetype pluginкоторый получает каждый раз при загрузке нового буфера этого типа файла.

О, я вижу. Конечно, без аргумента буфера, если есть несколько буферов, и один из них является файлом Python, карта будет работать на всех из них независимо от их типа. Благодарю. Dorsal6 6 лет назад 0