pymode para online configurar python vim scripting color-scheme

para - Cómo enviar el estado a la línea de estado de VIM después de llamar a la función VIM personalizada(Python)



vim python 3 (2)

Acabo de crear mi primer script VIM, lo escribí en Python. Es una secuencia de comandos simple para cambiar las combinaciones de colores de un directorio (/ vim / etc / colours). Me gustaría saber cómo enviar una notificación después de que el esquema de colores cambie con el nombre del esquema de color seleccionado a la ''línea de estado'' de vim ''.

rson dio una respuesta a mi pregunta, aquí hay una versión actualizada (y depurada) del guión para quién está interesado (funciona bien en cuanto puedo probar)

Implementado (tipo de) las sugerencias de AI y Caleb, gracias !:

" toggleColorScheme 0.9 (l) 2009 by Jasper Poppe <[email protected]> " 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])

De :help echo :

Un redibujado posterior puede hacer que el mensaje desaparezca nuevamente. Y dado que Vim principalmente pospone el redibujado hasta que haya terminado con una secuencia de comandos, esto sucede con bastante frecuencia. Para evitar que un comando anterior a ": echo" provoque un rediseño después (los rediseños a menudo se posponen hasta que escriba algo), fuerce un redibujado con | | redraw | mando. Ejemplo:

: nuevo | redibujar | echo "hay una nueva ventana"


Como está actualizando el script aquí,

En lugar de

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

Quizás

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