У меня есть небольшая проблема с "размером вкладки" и другим проектом, некоторым нравится 2 или 4 и ядро Linux как 8 пробелов на вкладку.
И это не большая проблема, так как я могу просто изменить несколько настроек в своем .vimrc
set tabstop=4
set shiftwidth=4
set softtabstop=4
Но это - 3 строки, которые я должен изменить...
Было бы хорошо иметь одну строку с переменной с номером 2,4 или 8.
Немного как
let l:tabsize=4
set tabstop=l:tabsize
set shiftwidth=l:tabsize
set softtabstop=l:tabsize
Но это не работает...
Вы знаете, как зафиксировать это?
Спасибо Johan
Обновление: Это решает мою небольшую проблему.
let tabsize = 4
execute "set tabstop=".tabsize
execute "set shiftwidth=".tabsize
execute "set softtabstop=".tabsize
нельзя использовать переменные в правой части файла .vimrc.
try: help feature-list для получения дополнительной информации. для unix и windows, например (не уверен, какие у вас проекты):
if has("unix")
" do stuff for Unix
elseif has("win32")
" do stuff for Windows
endif
может работать, или другие примеры:
let &path = g:desktop_path
или
execute "set path=".g:desktop_path
Если g: desktop_path содержит пробелы, вам придется их избегать, либо {{1 }} в исходной настройке g: desktop_path или при настройке 'path', например,
execute "set path=".escape(g:desktop_path, ' ')
См.
:help let-option
:help execute
:help escape()
Это решение не использует локальные переменные, но даст вам желаемый результат, используя только ваш файл .vimrc
. Просто добавьте приведенный ниже код в файл .vimrc
и добавьте дополнительные параметры проекта (даже сопоставления) для соответствующих функций ниже. (Не забудьте изменить пути подстановки в строках autocmd!
на соответствующее имя папки.)
autocmd! BufReadPost,BufNewFile */myProject/** call <SID>MyProjectOptions()
autocmd! BufReadPost,BufNewFile */linux-kernel/** call <SID>LinuxKernelOptions()
function! <SID>MyProjectOptions()
" everything in this function only applies to myProject files
setlocal tabstop=4
...
endfunction
function! <SID>LinuxKernelOptions()
" everything in this function only applies to linux kernel files
setlocal tabstop=8
...
endfunction
Это работает:
let my_sw = 20
let &sw = my_sw
Теперь вы можете понять, как исправить свой код