2017-01-04 12 views
0

Каковы реальные различия между типизации:В чем разница между аргументами отображения?

  1. :map <script> , dd

  2. :map , dd

  3. :map <buffer> , dd

  4. :map <script> <buffer> , dd

Меня больше интересуют аргументы <script>. В каких случаях необходимо использовать аргумент <script>

+0

вы прочитали соответствующую помощь документ, не так ли? – Kent

+0

Да, что касается 2 и 3, это ясно для меня и разница между ними, когда они сосуществуют, но когда приходит добавить аргумент '

1

«Сценарий» - это совокупность связанных команд Ex и функций vimscript, собранных вместе в файле *.vim.

При запуске Vim создает несколько «скриптов». Это означает, что он выполняет каждую строку в каждом скрипте так же, как если бы вы написали ее в командной строке самостоятельно. Кроме того, Vim отслеживает, что было с использованием механизма <SID>. «Сценарии» используются внутренним образом от Vim для предоставления дополнительных функций.

Смысл <script> аргумента четко разъяснены в :h <script>:

Если первый аргумент одной из этих команд «<script>» и используется для определить новое отображение или аббревиатуру, отображение будет только переназначать символы в {rhs} с использованием сопоставлений, которые были определены локально для скрипта, начиная с «<SID>». Это можно использовать, чтобы избежать того, что сопоставления вне сценария мешают (например, когда CTRL-V переназначается в mswin.vim), но используют другие сопоставления , определенные в скрипте.

«Буфер» - это представление содержимого файла в памяти. Подумайте об этом как о «документе» в обычных программах.

Когда вы редактируете «буфер» и вы определяете сопоставление <buffer>, это сопоставление будет доступно только в этом конкретном буфере.

Отправляясь с примерами:

" - remapping is possible but only with other 
" mappings defined in the same script 
:map <script> , dd 

" - mapping is global 
" - remapping is possible 
:map , dd 

" - mapping is buffer-local 
" - remapping is possible 
:map <buffer> , dd 

" - mapping is buffer-local 
" - remapping is possible but only with other 
" mappings defined in the same script 
:map <script> <buffer> , dd