繁体   English   中英

调用自定义VIM(Python)函数后如何将状态发送到VIM状态行

[英]How to send status to the VIM status line after calling custom VIM (Python) function

我刚刚创建了我的第一个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

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

来自:help echo

稍后重画可能会使消息再次消失。 而且由于Vim通常将重绘推迟到完成一系列命令后,这种情况经常发生。 为了避免命令“:echo”之前引起重绘(重绘通常会推迟到您键入内容之前),请使用|:redraw |强制重绘。 命令。 例:

:新| 重绘 回声“有一个新窗口”

由于您要在此处更新脚本,

代替

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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM