我的“标签尺寸”和不同的项目有一个小问题, 有些像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
答案 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
我希望这会有所帮助。