The modifier <buffer>
means the mapping is only effective for the buffer in which the command was run.
This is heavily used in ftplugins to create local mappings; e.g., you might want F8 to run :!python3 %
in python buffers but :make
in C buffers. You can make a single function that does this and bind it globally, but then you have to keep updating the function for new filetypes you work with.
Instead, bind F8 with a <buffer>
mapping in the relevant ftplugins. Then each new filetype gets its own binding, and the binding is located with all the other file-type specific settings.