Подтвердить что ты не робот

Хорошее руководство по 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?

Спасибо!

4b9b3361

Ответ 1

Лучший совет, который я могу дать, это то, что вы читаете:

:help usr_41.txt

который даст вам хороший обзор основ. Затем найдите некоторые вещи, которые вы хотите сделать, и создайте для них функции. Пока вы это делаете, интенсивно используйте:

:help function-list

чтобы понять, что представляют собой все встроенные функции. Большинство из них довольно схожи с другими языками сценариев (хотя и с более жестким синтаксисом), поэтому любой опыт работы с текстом в Python или что-то еще будет полезным.

Кроме того, посмотрите на странице сценариев vim и Google, чтобы получить примеры существующих сценариев, которые помогут расширить ваши знания.

Наконец (и, вероятно, самое главное), не бойтесь спрашивать о fooobar.com/questions/tagged/... или списке рассылки Vim, и у вас будет много поддержки для любых проблем, которые могут у вас возникнуть.

Ответ 3

Ал дал вам хороший ответ. Я также добавил бы vim.wikia, в котором есть несколько советов, связанных с вашим вопросом.

На заметку.

Я бы не сказал, что ma10jd'a20kp более элегантный. Я вижу следующие проблемы:

  • это довольно сложно поддерживать (что, если число строк станет параметром?),
  • людям нравится переопределять ключи, которые они никогда не учили (это можно исправить с помощью удара :normal!),
  • некоторые команды нормального режима имеют странное поведение в боковом регистре (например, <esc>, когда курсор находится на первом столбце),
  • он портит метку a и неназванный регистр - другие сценарии, или даже пользователь может ожидать, что их значения не будут изменены вашим сценарием.

Ответ 4

Я в подобной ситуации. Он все еще находится в моем списке "читать", но я только что нашел Scripting Vim editor. Статьи из IBM DeveloperWorks обычно очень хорошие, поэтому, вероятно, стоит проверить.