Подтвердить что ты не робот

Как использовать переменные в моем .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
4b9b3361

Ответ 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

Надеюсь, это поможет.