Створення гарячих клавіш VIM


0

Я досить новачок у VIM та Linux взагалі. Так що робити це самостійно - це значно вищий рівень мого майстерності. Я знайомий з файлом vimrc, але це все ...

Скажімо, у мене один термінал відкритого холостого ходу. Потім я відкриваю інший термінал і редагую файл python (.py) з vim. Як я можу створити постійну гарячу клавішу (наприклад, f1, наприклад), яка буде працювати у всіх режимах VIM, що збереже файл python та виконає його в іншому вікні терміналу?


le google: alisnic.github.io/posts/vim-run-hotkey - о, і запуск чого-небудь в іншому терміналі не є тривіальним, якщо ви не хочете запустити новий термінал. Я б сказав про це просто забути про це зараз ... Можливо, хтось стане кращою пропозицією :) Ласкаво просимо до СУ!
Ярослав Рахматуллін

Відповіді:


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>

appleLover згадав, що він є на Linux
taketwo

Це навряд чи є підставою голосувати за відповідь. Команда Vim ідентична в unix середовищі, крім бінарного шляху. Я все за педантизм, але ви, візьміть торт :)
Ярослав Рахматуллін

Я не бачу сенсу давати відповідь, яка, безумовно, не спрацює з запитувачем, якщо він не зробить належні зміни. Це може бути добре для навчальних цілей, але добре ... ми не в класі.
taketwo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.