Регистрация Vim в режиме Ex

Потенциально 2 вопроса в одном. Я хотел бы знать, как ссылаться на регистр в режиме Ex.

Например, я редактирую файл, и я хочу сохранить файл с меткой времени (или просто datestamp реально), добавленной к ней.

Я знаю, что могу установить регистр на значение вывода команд оболочки, используя:

:let @a = system("date +\"%Y-%m-%d\"")

Есть ли возможность разыменовать этот регистр и вставить его значение в команду Ex? Что-то вроде:

:w testfile.<value of "a register>

Копирование в системный буфер обмена и вставку было бы неплохо, но сделать это более универсальным/программным способом для создания других команд в будущем было бы неплохо.

Ответ 1

Есть два подхода к этому, но, вероятно, не то, что вы хотите.

  • Используйте <CTRL-R>a для вставки содержимого в текущую командную строку. См. :help c_CTRL-R для получения дополнительной информации.

  • Используйте exe, чтобы разрешить вставлять переменные в выражение. См. :help :exe и :help 41.3.

    :exe 'w testfile.' . @a
    

Ответ 2

Предполагая регистр "a", вы можете ввести:

<CTRL-R>a, который будет вводить значение register inline в этой точке. Это также можно использовать в режиме вставки.