Я думаю, что вы можете сделать это, определив пользовательскую команду, используя один из языков, который был скомпилирован в вашу копию vim. Я возьму на себя Python. Посмотрите, работает ли это: :py3 print('hello world')
. Если это так, то документация специально обсуждает манипулирование окнами:
5. Window objects python-window
Window objects represent vim windows. You can obtain them in a number of ways:
- via vim.current.window (python-current)
- from indexing vim.windows (python-windows)
- from indexing "windows" attribute of a tab page (python-tabpage)
- from the "window" attribute of a tab page (python-tabpage)
You can manipulate window objects only through their attributes. They have no
methods, and no sequence or other interface.
Если объединить это с примером из здесь :
For anything nontrivial, you'll want to put your Python code in a separate
file, say (for simplicity) x. To get that code into a Vim session, type
:source x
from within that session. That file will actually be considered to be
Vimscript code, but with Python embedded.
Extending the above obligatory "hello wordl" example, place
:map hw :py3 print("hello world")
in x. From then on, whenever you type 'hw' in noninsert mode, you'll
see the greeting appear in the status line.
For more elaborate code, The format of the file x is typically this:
python << endpy
import vim
lines of Python code
endpy
Не похоже, что вы натолкнетесь на то, что делает именно то, что вы ищете, подобно этому:
py3 << __EOF__
import vim
def do_window_stuff(foo):
if vim.current.window == foo:
<do some stuff>
__EOF__
command WindowThing :py3 do_window_stuff(foo)
" OR
noremap .windowthing :py3 do_window_stuff(foo)
Это встраивание питона в Vimscript. Последние несколько строк отобразят пользовательскую команду в функцию python do_window_stuff ().
Использование command
позволит вам вызвать его из командной строки в режиме :WindowThing
(команда должна начинаться с заглавной буквы).
Использование noremap
переназначит последовательность клавиш .windowthing
при вводе из режима без вставки.