我有一个小问题"标签大小"和不同的项目,有些像2或4和Linux内核,如每个标签8个空格.
这不是一个大问题,因为我可以在我的.vimrc中更改几个设置
set tabstop=4
set shiftwidth=4
set softtabstop=4
Run Code Online (Sandbox Code Playgroud)
但那是我需要改变的三条线......
如果一行包含一个数字为2,4或8的变量,那就太好了.
有点像
let l:tabsize=4
set tabstop=l:tabsize
set shiftwidth=l:tabsize
set softtabstop=l:tabsize
Run Code Online (Sandbox Code Playgroud)
但这不起作用......
你知道怎么解决这个问题吗?
谢谢约翰
更新:这解决了我的小问题.
let tabsize = 4
execute "set tabstop=".tabsize
execute "set shiftwidth=".tabsize
execute "set softtabstop=".tabsize
Run Code Online (Sandbox Code Playgroud)
vol*_*vox 28
你不能在.vimrc中的rhs上使用变量.
尝试:帮助功能列表获取更多信息.例如unix vs windows(不确定你的项目是什么):
if has("unix")
" do stuff for Unix
elseif has("win32")
" do stuff for Windows
endif
Run Code Online (Sandbox Code Playgroud)
可能有用,或其他例子
let &path = g:desktop_path
Run Code Online (Sandbox Code Playgroud)
要么
execute "set path=".g:desktop_path
Run Code Online (Sandbox Code Playgroud)
如果g:desktop_path包含空格,则必须在g:desktop_path的原始设置或设置'path'时转义它们,例如,
execute "set path=".escape(g:desktop_path, ' ')
Run Code Online (Sandbox Code Playgroud)
看到
:help let-option
:help execute
:help escape()
Run Code Online (Sandbox Code Playgroud)
dim*_*mba 11
这是有效的:
let my_sw = 20
let &sw = my_sw
Run Code Online (Sandbox Code Playgroud)
现在您可以了解如何修复代码
随着这个话题重新焕发生机,这里有几点:
" 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
Run Code Online (Sandbox Code Playgroud)
.请忘了execute 'set option='.var.let &option=var至少可以使用vim-7.0.
此解决方案不使用局部变量,但仅使用.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27327 次 |
| 最近记录: |