Как использовать переменные в моем .vimrc?
У меня небольшая проблема с размером вклада и другим проектом,
некоторые вроде 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
Ответы
Ответ 1
вы не можете использовать переменные в rhs в .vimrc.
попробуйте: справочный список справки для получения дополнительной информации. например, для unix vs 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 содержит пробелы, вам придется избегать этих
в исходной настройке g: desktop_path или при установке "path", например,
execute "set path=".escape(g:desktop_path, ' ')
См
:help let-option
:help execute
:help escape()
Ответ 2
Это работает:
let my_sw = 20
let &sw = my_sw
Теперь вы можете понять, как исправить свой код
Ответ 3
Поскольку эта тема снова ожила, вот мои несколько бит:
" In the vimrc
set softtabstop=-1 " Make 'softtabstop' follow 'shiftwidth'
set shiftwidth=0 " Make 'shiftwidth' follow 'tabstop'
" Somewhere else
let &tabstop=l:tabsize " Assign 'tabstop' a value of local tabsize variable
" or, typed manually
set ts=4
. И, пожалуйста, забудьте о execute 'set option='.var
. let &option=var
доступен, по крайней мере, vim-7.0
.
Ответ 4
Это решение не использует локальные переменные, но оно даст вам результат, который вы хотите использовать только в своем файле .vimrc
. Просто добавьте код в свой .vimrc
файл и добавьте дополнительные параметры (даже сопоставления) для конкретных функций ниже. (Не забудьте изменить пути globbing в строках 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
Ответ 5
Здесь однострочный, который переключает цветную колонку вкл/выкл, когда вы нажимаете лидера + c:
nnoremap <Leader>c :execute "set colorcolumn=" . (&cc == "+1" ? "0" : "+1")<CR>
Ответ 6
Я был обеспокоен этой проблемой для очень долгого времени. Это особенно болезненно, когда мне нужно одновременно работать с другими людьми, что заставляет меня часто менять размер отступа. У меня было что-то похожее на решение OP, но это все равно требует обновления файла .vimrc
каждый раз. Позже я узнал, что могу просто определить эту функцию, которую я мог бы вызвать из редактора:
function! SetTabSize(size)
execute "set tabstop=".a:size
execute "set shiftwidth=".a:size
execute "set softtabstop=".a:size
endfunction
command! -nargs=1 Sts call SetTabSize(<f-args>)
В редакторе, если вы хотите изменить текущий размер отступа на 4, просто выполните:
:Sts 4
Надеюсь, это поможет.