0

Сохранить и запустить одновременно в Vim

25

Я часто занимаюсь быстрой симуляцией на Python и постоянно сохраняю (:w), а затем запускаю (:!!). Есть ли способ объединить эти действия? Может быть, команда "сохранить и запустить"?

5 ответ(ов)

0

Вариант 1:

Напишите функцию, подобную этой, и добавьте её в настройки вашего запуска:

function myex()
   execute ':w'
   execute ':!!'
endfunction

Вы также можете привязать к ней сочетание клавиш — посмотрите в документацию.


Вариант 2 (лучше):

Смотрите документацию по переназначению клавиш — возможно, вам удастся сделать это с помощью простого переназначения клавиши. Приведенный ниже код работает, но имеет жестко закодированное имя "filename.py". Возможно, вам стоит разобраться, как заменить его на текущее имя файла:

:map <F2> <Esc>:w<CR>:!filename.py<CR>

После того как вы переназначите клавишу, вы сможете просто нажимать в командном режиме.

imap, vmap и т.д. — это различные режимы переназначений. Приведенный выше код применим только в командном режиме. Следующий пример должен работать и в режиме вставки:

:imap <F2> <Esc>:w<CR>:!filename.py<CR>a

Раздел 40.1 справочника Vim будет очень полезен.

0

Вот ваш ответ на StackOverflow:

:nmap <F1> :w<cr>:!%<cr>

Эта команда создаёт привязку для клавиши F1 в режиме нормального режима (n), которая сначала сохраняет текущий файл (команда :w), а затем запускает его в терминале (команда :!%, где % представляет текущий файл).

Обратите внимание, что вам нужно находиться в нормальном режиме, чтобы эта команда работала. Если вы сейчас находитесь в режиме вставки, просто нажмите Esc, чтобы вернуться в нормальный режим, и затем используйте F1, чтобы выполнить эти команды.

Также имейте в виду, что для запуска этой команды вы можете использовать цикл for в Vim, если это необходимо в вашем скрипте, но в приведенной команде это не требуется.

0

Комбинация команд, похоже, работает через символ |, поэтому, возможно, стоит рассмотреть возможность создания алиаса, который будет выглядеть как :w|!ваша-команда-здесь, и привязать его к определенной комбинации клавиш. Это позволит вам выполнять команду после сохранения файла. Чтобы это сделать, вам потребуется настроить ваш vim файл конфигурации (~/.vimrc), добавив туда соответствующий алиас.

Например, вы можете использовать следующий код:

nnoremap <C-S> :w|!ваша-команда-здесь<CR>

Здесь <C-S> — это комбинация клавиш, которую вы хотите использовать. Не забудьте заменить ваша-команда-здесь на вашу конкретную команду. Теперь при нажатии соответствующей комбинации клавиш ваш файл будет сохраняться, а затем будет выполнена указанная команда.

0

Еще одна возможность:

au BufWriteCmd *.py write | !!

Однако имейте в виду, что это будет выполнять команду каждый раз при сохранении файла, что может быть не тем, что вам нужно.

0

Вы можете добавить следующую строку в свой файл .vimrc, чтобы быстро выполнить команду в оболочке на основе вашего текущего файла:

nnoremap <leader>r :w<CR>:!!<CR>

После этого, конечно, необходимо запустить вашу команду в оболочке хотя бы один раз, чтобы Vim знал, какую команду выполнять.

Пример использования:

:!node ./test.js

Теперь, когда вы нажмете комбинацию клавиш <leader>r, ваш файл будет сохранен, и команда выполнится в терминале.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь