Хорошее руководство по VIM Scripting?
Я использовал VIM еще 10 лет, но никогда не писал сценарии VIM (всегда субъективно верил, что это была одна из областей, где VIM слабее Emacs).
В последнее время реализация "в VIM script, я могу выполнять команды нормального режима", заставил мой разум пойти "а-ха" и вдруг начал осознавать, почему части VIM script - это то, как это делается.
normal ma10jd'a20kp
намного шире, чем
Marker m = currentLocation();
advanceLines(10);
Buffer b = delete(currentLocation(), m);
advanceLines(-20);
insertBuffer(b);
Теперь вопрос - какой хороший ресурс для изучения скриптов vim?
Спасибо!
Ответы
Ответ 1
Лучший совет, который я могу дать, это то, что вы читаете:
:help usr_41.txt
который даст вам хороший обзор основ. Затем найдите некоторые вещи, которые вы хотите сделать, и создайте для них функции. Пока вы это делаете, интенсивно используйте:
:help function-list
чтобы понять, что представляют собой все встроенные функции. Большинство из них довольно схожи с другими языками сценариев (хотя и с более жестким синтаксисом), поэтому любой опыт работы с текстом в Python или что-то еще будет полезным.
Кроме того, посмотрите на странице сценариев vim и Google, чтобы получить примеры существующих сценариев, которые помогут расширить ваши знания.
Наконец (и, вероятно, самое главное), не бойтесь спрашивать о fooobar.com/questions/tagged/... или списке рассылки Vim, и у вас будет много поддержки для любых проблем, которые могут у вас возникнуть.
Ответ 2
Узнать Vimscript Hard Way тоже стоит проверить.
http://learnvimscriptthehardway.stevelosh.com/
Ответ 3
Ал дал вам хороший ответ. Я также добавил бы vim.wikia, в котором есть несколько советов, связанных с вашим вопросом.
На заметку.
Я бы не сказал, что ma10jd'a20kp
более элегантный. Я вижу следующие проблемы:
- это довольно сложно поддерживать (что, если число строк станет параметром?),
- людям нравится переопределять ключи, которые они никогда не учили (это можно исправить с помощью удара
:normal!
),
- некоторые команды нормального режима имеют странное поведение в боковом регистре (например,
<esc>
, когда курсор находится на первом столбце),
- он портит метку a и неназванный регистр - другие сценарии, или даже пользователь может ожидать, что их значения не будут изменены вашим сценарием.
Ответ 4
Я в подобной ситуации. Он все еще находится в моем списке "читать", но я только что нашел Scripting Vim editor. Статьи из IBM DeveloperWorks обычно очень хорошие, поэтому, вероятно, стоит проверить.