VIM: Разница между set и setl с точки зрения типа файла - PullRequest
7 голосов
/ 13 января 2011

Я понимаю, что VIM делает различие между set и setl в том, что первый устанавливает параметр для всех буферов, а последний устанавливает параметр только для буфера current . Это очевидно, если я сделаю :set tw=80 вместо :setl tw=80.

Теперь, когда я делаю :set ft=plsql, он работает только с текущим буфером, хотя я не делал setl. Это, конечно, имеет смысл. Тем не менее, я не вижу, задокументировано ли это где-нибудь. Итак, вопрос, вероятно, сводится к следующему: есть ли опции, которые по умолчанию работают с текущим буфером, в то время как другие работают «везде» и где это задокументировано?

Ответы [ 2 ]

11 голосов
/ 13 января 2011

Действительно, есть опции, которые работают с текущим буфером (и в некоторых случаях с текущим окном). Документация с документацией для варианта. Если вы перейдете к любому параметру в :help option-list, он будет иметь одну из следующих трех строк в качестве строки третьего выхода:

global
local to window
local to buffer

(или некоторая их комбинация). Например, :help 'ft' дает:

                    *'filetype'* *'ft'*
'filetype' 'ft'     string (default: "")
            local to buffer
            {not in Vi}
            {not available when compiled without the |+autocmd|
            feature}
    When this option is set, the FileType autocommand event is triggered.
    All autocommands that match with the value of this option will be
    executed.  Thus the value of 'filetype' is used in place of the file
    name.

Таким образом, эта опция является локальной для буфера. Подробнее об этом см .:

:help option-summary
0 голосов
/ 13 января 2011

Когда вы читаете новый буфер в vim или перемещаетесь из одного буфера в другой, vim запускает эквивалент BufEnter, который повторно оценивает тип файла файла в этом буфере. Вы могли бы потенциально отменить это поведение, удалив каталог ftdetect в ~ / .vim и заменив его файлом, содержащим только au BufRead,BufNewFile,BufEnter * set filetype=plsql, после чего все файлы будут считываться как SQL. Если вы сбросите все определения типов файлов, автокоманда никогда не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...