76

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

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

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

4 ответа4

93

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

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

: команда DeleteFirst 1delete

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

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

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

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

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .