Сохранить и запустить одновременно в Vim
Я часто занимаюсь быстрой симуляцией на Python и постоянно сохраняю (:w), а затем запускаю (:!!). Есть ли способ объединить эти действия? Может быть, команда "сохранить и запустить"?
5 ответ(ов)
Вариант 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 будет очень полезен.
Вот ваш ответ на StackOverflow:
:nmap <F1> :w<cr>:!%<cr>
Эта команда создаёт привязку для клавиши F1 в режиме нормального режима (n
), которая сначала сохраняет текущий файл (команда :w
), а затем запускает его в терминале (команда :!%
, где %
представляет текущий файл).
Обратите внимание, что вам нужно находиться в нормальном режиме, чтобы эта команда работала. Если вы сейчас находитесь в режиме вставки, просто нажмите Esc
, чтобы вернуться в нормальный режим, и затем используйте F1
, чтобы выполнить эти команды.
Также имейте в виду, что для запуска этой команды вы можете использовать цикл for
в Vim, если это необходимо в вашем скрипте, но в приведенной команде это не требуется.
Комбинация команд, похоже, работает через символ |
, поэтому, возможно, стоит рассмотреть возможность создания алиаса, который будет выглядеть как :w|!ваша-команда-здесь
, и привязать его к определенной комбинации клавиш. Это позволит вам выполнять команду после сохранения файла. Чтобы это сделать, вам потребуется настроить ваш vim файл конфигурации (~/.vimrc
), добавив туда соответствующий алиас.
Например, вы можете использовать следующий код:
nnoremap <C-S> :w|!ваша-команда-здесь<CR>
Здесь <C-S>
— это комбинация клавиш, которую вы хотите использовать. Не забудьте заменить ваша-команда-здесь
на вашу конкретную команду. Теперь при нажатии соответствующей комбинации клавиш ваш файл будет сохраняться, а затем будет выполнена указанная команда.
Еще одна возможность:
au BufWriteCmd *.py write | !!
Однако имейте в виду, что это будет выполнять
команду каждый раз при сохранении файла, что может быть не тем, что вам нужно.
Вы можете добавить следующую строку в свой файл .vimrc
, чтобы быстро выполнить команду в оболочке на основе вашего текущего файла:
nnoremap <leader>r :w<CR>:!!<CR>
После этого, конечно, необходимо запустить вашу команду в оболочке хотя бы один раз, чтобы Vim знал, какую команду выполнять.
Пример использования:
:!node ./test.js
Теперь, когда вы нажмете комбинацию клавиш <leader>r
, ваш файл будет сохранен, и команда выполнится в терминале.
Как изменить порядок столбцов в DataFrame?
'pip' не распознан как командa внутреннего или внешнего формата
Почему statistics.mean() работает так медленно?
Преобразование строки даты JSON в datetime в Python
Есть ли разница между поднятием экземпляра класса Exception и самого класса Exception?