如何在.vimrc中使用变量?

时间:2010-02-17 21:33:26

标签: vim

我的“标签尺寸”和不同的项目有一个小问题, 有些像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

但这不起作用......

你知道如何解决这个问题吗?

由于 约翰


更新: 这解决了我的小问题。

let tabsize = 4
execute "set tabstop=".tabsize
execute "set shiftwidth=".tabsize
execute "set softtabstop=".tabsize

6 个答案:

答案 0 :(得分:27)

你不能在.vimrc中的rhs上使用变量。

尝试:帮助功能列表获取更多信息。例如,对于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()

答案 1 :(得分:10)

这是有效的:

let my_sw = 20
let &sw = my_sw

现在您可以了解如何修复代码

答案 2 :(得分:7)

随着这个话题重新焕发活力,这里有几点:

" 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

答案 3 :(得分:4)

此解决方案不使用局部变量,但只使用.vimrc文件即可获得所需的结果。只需将以下代码添加到.vimrc文件中,并将更多项目特定选项(甚至映射)添加到下面的相应功能中。 (请记住将autocmd!行中的globbing路径更改为相应的文件夹名称。)

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

答案 4 :(得分:1)

这是一个单线程,当你击中领导者+ c时打开/关闭色列:

nnoremap <Leader>c :execute "set colorcolumn=" . (&cc == "+1" ? "0" : "+1")<CR>

答案 5 :(得分:1)

对于非常长时间的这个问题,我一直感到困扰。当我需要同时使用其他人的代码时,这尤其令人痛苦,这迫使我经常来回更改缩进大小。我曾经有类似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

我希望这会有所帮助。