【问题标题】:How to send status to the VIM status line after calling custom VIM (Python) function调用自定义VIM(Python)函数后如何将状态发送到VIM状态行
【发布时间】:2009-11-30 21:47:10
【问题描述】:

我刚刚创建了我的第一个 VIM 脚本,我用 Python 编写了它。这是一个从目录 (/vim/etc/colors) 切换配色方案的简单脚本。我想知道在颜色方案更改为所选颜色方案的名称后如何发送通知到vim'statusline'。

rson 回答了我的问题,这是脚本的更新(和调试)版本,供感兴趣的人使用(就我可以测试而言,工作正常)

已实施(某种)AI 和 Caleb 的建议,谢谢!:

" toggleColorScheme 0.9 (l) 2009 by Jasper Poppe <jpoppe@ebay.com>

" cycle through colorschemes with F8 and Shift+F8
nnoremap <silent><F8> :call ToggleColorScheme("1")<CR>
nnoremap <silent><s-F8> :call ToggleColorScheme("-1")<CR>

" set directory with color schemes to cycle through
let g:Toggle_Color_Scheme_Path = "/etc/vim/colors"


function! ToggleColorScheme(paramater)
python << endpython
import vim
import os

paramater = (vim.eval('a:paramater'))
scheme_path = vim.eval('g:Toggle_Color_Scheme_Path')

colorschemes = [color.split('.')[0] for color in os.listdir(scheme_path) if color.endswith('.vim')]
colorschemes.sort()

if not vars().has_key('position'):
    start_scheme = vim.eval('g:colors_name') + '.vim'
    if start_scheme in colorschemes:
        position = colorschemes.index(start_scheme)
    else:
        position = 0

position += int(paramater)
position %= len(colorschemes)

vim.command('colorscheme %s' % colorschemes[position])
vim.command('redraw | echo "%s"' % colorschemes[position])
vim.command('return 1')
endpython
endfunction

【问题讨论】:

    标签: python vim scripting color-scheme


    【解决方案1】:

    vim.command('redraw | echo "%s"' % colorschemes[position])

    来自:help echo

    稍后重绘可能会使消息再次消失。 而且由于 Vim 大多推迟重绘,直到它 完成一系列命令会发生这种情况 经常。为了避免之前的命令 ":echo" 之后会导致重绘(重绘通常是 推迟到你输入一些东西),强制重绘 与 |:redraw|命令。示例:

    :新 |重绘 | echo "有一个新窗口"

    【讨论】:

      【解决方案2】:

      由于您在此处更新脚本,

      代替

      if argument == 'next':
          position += 1
          if position == len(colorschemes) - 1:
              position = 0
      elif argument == 'prev':
          position -= 1
          if position == -1:
              position = len(colorschemes) - 1
      

      也许

      scroll['next'] = +1
      scroll['prev'] = -1
      position += scroll[argument]
      position = position % len(colorschemes) 
      

      【讨论】:

      • 甚至:position %= len(colorschemes)
      • @Al Nice。我没有意识到这也适用于 mod。
      • @AI 和 Caleb:因为这是我的第一个 VIM 脚本,我真的很高兴它能正常工作,我将实施另一个修复(set t_Co=256 似乎有时会被遗忘)将改进脚本本周晚些时候你的建议;)。
      • 更新了脚本,似乎不再需要“set t_Co=256 fix”了:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2021-06-09
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2012-01-17
      • 2012-01-03
      相关资源
      最近更新 更多