Vim - как хранить и выполнять часто используемые команды? - PullRequest
5 голосов
/ 24 августа 2009

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

: установить tw = 50
gggqG

Можно ли сохранить вышеперечисленное и запустить его с помощью комбинации клавиш?

Ответы [ 6 ]

12 голосов
/ 24 августа 2009

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

:map \r :set tw=50<CR>gggqG

Это отобразит \r, что приведет к выполнению двух ваших строк при каждом нажатии \r. Конечно, вы также можете выбрать другой ярлык, например <C-R> (Ctrl + R) или <F12> или что-то еще.

9 голосов
/ 24 августа 2009

Следующее в .vimrc определит новую команду Wrap, которая делает то, что вы хотите.

command! Wrap :set tw=50 | :normal gggqG

Позвоните по номеру :Wrap

6 голосов
/ 24 августа 2009

В качестве очень быстрого начала поместите это в свой .vimrc:

" define the function
" '!' means override function if already defined
" always use uppercase names for your functions
function! DoSomething()
    :set tw=50
    gggqG 
endfunction

" map a keystroke (e.g. F12) in normal mode to call your function
nmap <F12> :call DoSomething()<CR>

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

2 голосов
/ 24 августа 2009

Кроме макросов, вы можете использовать argdo. Эта команда выполнит одну и ту же операцию для всех открытых файлов. Вот как вы форматируете все открытые файлы, используя :argdo и :normal:

shell> vim *.txt

:argdo exe "normal gggqG"|up
1 голос
/ 24 августа 2009

Прежде чем вы начнете писать тысячи строк .vimrc (что хорошо, но вы можете отложить это на некоторое время), я думаю, что вы, возможно, захотите взглянуть на простую запись, в частности, вы можете рассмотреть возможность использования q x (где x - любая клавиша) для записи, q для завершения записи и @ x для выполнения записанного макроса.

0 голосов
/ 24 августа 2009

Да, важное слово макрос

Но похоже, что «команда», такая как: set tw = 50, будет лучше включена в файл .vimrc, поэтому vim использует ее каждый раз при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...