Я довольно новичок в VIM и Linux в целом. Так что делать это самостоятельно намного выше моего уровня мастерства сейчас. Я знаком с файлом vimrc, но это все ...

Допустим, у меня один терминал открыт на холостом ходу. Затем я открываю другой терминал и редактирую файл python (.py) с помощью vim. Как я могу создать постоянную горячую клавишу (например, f1), которая будет работать во всех режимах VIM, которая сохранит файл python и выполнит его в другом окне терминала?

2 ответа2

1

Выполнение команды в другом существующем терминале может быть выполнено, но это далеко не тривиально.

Во-первых, у вас открыто более одного эмулятора терминала. Эти эмуляторы терминала работают под управлением оболочки, вероятно, bash если вы работаете в Linux. С помощью команды ps вы можете найти идентификаторы процессов (PID) всех оболочек, работающих на вашем компьютере. Большой вопрос сейчас таков; кому отправить команду?

Вы ищете оболочку, которая принадлежит терминалу, на котором вы хотите показать команду. Выполнение команды echo $$ на соответствующем терминале должно вернуть PID оболочки, работающей на этом терминале. Используя файловую систему /proc вы можете определить стандартный ввод оболочки /proc/<PID>/fd/0 , который является pty устройством.

Далее вы хотите отправить команду на этот терминал. Это должно быть сделано с помощью команды TIOCSTI ioctl на оболочке pty. Вы можете найти исходный код C для этого здесь. Скомпилируйте эту программу, например, как ttyecho и поместите ее в каталог в вашем $ PATH.

Теперь все готово , и вы можете вызвать команду ttyecho с именем pty оболочки и командой python <filename> .

Выполнение всего этого в vimscript оставлено читателю в качестве упражнения. :-)

-1

Вы можете попробовать что-то вроде этого (тот же терминал):

map <F2>:w<CR>!C:\Python27\python.exe %<CR><CR>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .