W Vimie jakie są ustawienia / polecenia, które zaczynają się od przedrostka (b :, g :)?

26

Zainstalowałem tę wtyczkę z Vundle i zauważyłem, że ma pewne ustawienia (README nazywa je zmiennymi), takie jak:

b:javascript_fold

i

g:javascript_conceal

README mówi: „mogę dodać je do twojego, .vimrcaby włączyć / wyłączyć ich funkcje”. Ale nie jestem pewien, jak je ustawić :. Zmienne te nie są dostępne za pośrednictwem setlub echo, ani nie są poleceniami ani funkcjami. Jak mogę je ustawić / sprawdzić?

Dmitrij Minkowski
źródło

Odpowiedzi:

48

To są zmienne wewnętrzne.

Tworzysz i modyfikujesz je za pomocą :letpolecenia:

:let g:var_name = 1

Niszczycie je przy pomocy :unlet.

Sprawdzasz je za pomocą :echo.

Prefiks pokazuje zakres zmiennej; z :help internal-variables:

buffer-variable    b:    Local to the current buffer.
window-variable    w:    Local to the current window.
tabpage-variable   t:    Local to the current tab page.
global-variable    g:    Global.
local-variable     l:    Local to a function.
script-variable    s:    Local to a |:source|'ed Vim script.
function-argument  a:    Function argument (only inside a function).
vim-variable       v:    Global, predefined by Vim.

Dodanie tego rodzaju zmiennej do twojego ~/.vimrcwygląda następująco:

let g:var_name = 1

Zwykle do zmiennych należy dodawać tylko zmienne globalne, zmienne ~/.vimrclokalne w buforze mają być używane we wtyczkach typu pliku.

romainl
źródło
2
Dla kompletności: bez prefiksu: w funkcji: lokalna dla funkcji; w przeciwnym razie: globalny
Tom Hale
11

Zmienne konfiguracyjne nie są opcjami, tylko „emulują” te dla wtyczek. Dlatego nie używasz :set, ale :let(i :echożeby wymienić ich bieżącą wartość).

Znak przed zmienną określa jej zasięg. g:oznacza globalny; zazwyczaj należy je ustawić przed załadowaniem wtyczki, tzn. poprzez umieszczenie

let g:javascript_conceal = 1

do twojego ~/.vimrc(i restartującego Vima).

Ponieważ niektóre konfiguracje dotyczą tylko niektórych rodzajów plików , używają one b:przedrostka. Ustawienie ich po ~/.vimrcprostu zastosuje je do pierwszego otwartego bufora, co nie jest tym, czego chcesz. Zamiast tego musisz podłączyć się do mechanizmu wykrywania rodzaju pliku .

Jeśli chcesz włączyć opcję konfiguracji tylko dla niektórych rodzajów plików, użyj :let b:var = valuezamiast tego i wprowadź odpowiednie polecenia w ~/.vim/after/ftplugin/{filetype}.vim, gdzie {filetype}jest rzeczywisty typ pliku (np javascript.). (Wymaga to posiadania :filetype plugin on; użycie katalogu after pozwala zastąpić wszelkie domyślne ustawienia typu pliku wykonane przez $VIMRUNTIME/ftplugin/{filetype}.vim.)

Alternatywnie możesz zdefiniować :autocmd FileType {filetype} setlocal option=valuebezpośrednio w swoim ~/.vimrc, ale zwykle staje się nieporęczny, gdy masz wiele dostosowań.

autocmd Filetype javascript let b:javascript_fold = 1
Ingo Karkat
źródło