Как добавить команду в редакторе vim?

87

Если предположить, что мой исходный код имя файла "foo.c". Во время редактирования и отладки я всегда выполняю эту команду:

:! gcc -g foo.c -o foo; gdb foo

Могу ли я добавить пользовательскую команду в Vim, чтобы при вводе «: debug» выполнялась указанная выше команда? Как мне этого добиться?

Абхиджит Растоги
источник

Ответы:

103

Да. Документация Vim, раздел 40.2, Отображения командной строки :

Редактор Vim позволяет вам определять свои собственные команды. Эти команды выполняются так же, как и любая другая команда режима командной строки. Чтобы определить команду, используйте команду «: command» следующим образом:

: команда DeleteFirst 1delete

Теперь при выполнении команды ": DeleteFirst" Vim выполняет ": 1delete", которая удаляет первую строку.

Примечание. Пользовательские команды должны начинаться с заглавной буквы. Вы не можете использовать «: X», «: Next» и «: Print». Подчеркивание не может быть использовано! Вы можете использовать цифры, но это не рекомендуется.

Поместите эту строку в свой ~/.vimrc(минус начальный :курс), и она будет определяться каждый раз, когда вы запускаете vim. Кроме того, используйте %:tдля ссылки на редактируемый файл (запись ! gcc %:tзаменяется на ! gcc foo.c).

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

Джеймс Полли
источник
4
если вы заменяете существующую команду, вам нужно использовать command!.
phyatt
14

В Vim уже есть поддержка Makefiles (: make). Если вы создаете его для своего источника, вы можете указать в нем, что вы хотите сделать. Кроме того, с помощью ctags Vim сможет перебирать любые ошибки, обнаруженные во время компиляции.

Джереми Л
источник
5

Добавьте пользовательскую команду редактора vi:

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

Шаг 1: Поместите эту строку в файл с именем ~ / legend_header.txt`

this text will be added

Шаг 2: Поместите эту команду в ваш файл ~ / .vimrc (если файл не существует, создайте его):

"The following command puts the contents of ~/legend_header.txt 
"under the cursor when the user types ":Legend" in normal mode.
command Legend :r ~/legend_header.txt

Шаг 3: Перезапустите vi, чтобы изменения вступили в силу. Вы сделали

Проверь это

Шаг 1: Откройте новый файл в vi. Будьте в "нормальном режиме" по умолчанию в vi. Тип:Legend

Шаг 2: Содержимое ~/legend_header.txtдолжно быть добавлено там, где находится курсор.

Эрик Лещинский
источник
0

Я использую эту команду в моем .vimrc для компиляции и исполнения кода c:

:command Gcc !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; chmod o+x $1; $1

, но для ваших нужд вы можете поставить:

:command Gdb !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; gdb $1

Вы можете быть уверены, что имя файла exec будет именем источника без расширения .c.

Хуан Мигель АР
источник