Vimscript:如何将变量/ float传递给字符串?

时间:2014-07-12 21:13:31

标签: vim vim-plugin

阅读有关Vimscript的手册后,我想创建自己的Vim脚本。

我认为在Vim中使用golden ratio from Wikipedia分割窗口会很好。

当您在vsplit中切换到另一个窗口时,您将获得黄金比例。为此,我创建了这个Vimscript。

function! GoToLeftWindow()
    execute "vertical resize 109"  
    execute "wincmd h"
endfunction

function! GoToRightWindow()
    execute "vertical resize 109"  
    execute "wincmd l"
endfunction

function! CreateNewWindow()
    execute "vsplit"  
    execute "wincmd h"
    execute "vertical resize 109"  
    execute "wincmd l"
endfunction


nnoremap <A-n> :call CreateNewWindow()<CR>
nnoremap <silent> <left> :call GoToLeftWindow()<CR>
nnoremap <silent> <right> :call CurrentWin()<CR>

所以,当我有垂直窗口时,我从一个窗口切换到另一个窗口,我将始终在活动窗口中显示黄金比例。听起来不错。:)

但我注意到,当我在不同的台式机上工作时,不同的分辨率,黄金比例已经消失。 为了防止这种情况,我决定让Vim计算黄金比例。因此,在每个具有不同字体大小的系统上,您将始终拥有黄金比例。

为了实现这一目标,我学习了更多关于Vimscript的知识,并创建了这个计算:

function! GoToRightWindow()
     let curWin= winwidth(0)
     lockvar curWin
      let golden_ratio = 1.618
      let result = curWin / golden_ratio
      let ratio = curWin - result

    execute "vertical resize " . ratio
    execute "wincmd l"
endfunction

winwidth(0)(参见:echo winwidth(0),是当前窗口的宽度(0)。)但我收到错误806,我的字符串中有一个浮点数。所以当连接时,Vim不允许我使用Float作为字符串。我试图将它转换为str2float(比率)的字符串,但它也给出了错误。

而且我的专注也是错误的。任何人都有一个建议,我怎么能用字符串连接浮点数?

提前致谢。

2 个答案:

答案 0 :(得分:6)

string()将变量转换为字符串类型。

:help string()

答案 1 :(得分:3)

问题在于您已将比率计算为浮点类型,但:resize命令仅采用整数值,因为它显然必须处理整行/ columns。

要进行转换,您可以使用内置的float2nr()函数,可选择在首先对浮点值使用round()之后。