Como adicionar um comando no editor vim?

87

Se suponha que o nome do meu arquivo de código-fonte seja "foo.c". Durante a edição e depuração, eu sempre executo este comando: -

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

Posso adicionar um comando personalizado ao Vim para que, se eu digitar ": debug", o comando acima for executado? Como faço para conseguir isso?

Abhijeet Rastogi
fonte

Respostas:

103

Sim. Documentação do Vim, seção 40.2, Mapeamentos da linha de comandos :

O editor Vim permite definir seus próprios comandos. Você executa esses comandos como qualquer outro comando do modo de linha de comando. Para definir um comando, use o comando ": command", da seguinte maneira:

: comando DeleteFirst 1delete

Agora, quando você executa o comando ": DeleteFirst" O Vim executa ": 1delete", que exclui a primeira linha.

Nota: Os comandos definidos pelo usuário devem começar com uma letra maiúscula. Você não pode usar ": X", ": Avançar" e ": Imprimir". O sublinhado não pode ser usado! Você pode usar dígitos, mas isso é desencorajado.

Coloque essa linha no seu ~/.vimrc(menos a inicial, é :claro) e ela será definida toda vez que você iniciar o vim. Além disso, use %:tpara fazer referência ao arquivo que está sendo editado (a gravação ! gcc %:té substituída por ! gcc foo.c).

Se você deseja que ele seja definido apenas para um arquivo ou para determinados arquivos, você deseja um comando automático.

James Polley
fonte
4
se você estiver substituindo um comando existente, precisará usar command!.
Phyatt
14

O Vim já tem suporte para Makefiles (: make). Se você criar um para sua fonte, poderá especificar nele o que deseja fazer. Além disso, através de ctags, o Vim poderá iterar através de quaisquer erros encontrados durante a compilação.

Jeremy L
fonte
5

Inclua um comando do editor vi definido pelo usuário:

Isso fará com que, quando o usuário digitar :Legendno modo normal, um bloco de texto seja adicionado sob o cursor.

Etapa 1: coloque esta linha em um arquivo chamado ~ / legend_header.txt`

this text will be added

Etapa 2: Coloque este comando no seu arquivo ~ / .vimrc (se o arquivo não existir, crie-o):

"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

Etapa 3: reinicie o vi para que as alterações entrem em vigor. Você Terminou.

Teste-o

Etapa 1: abra um novo arquivo no vi. Esteja no "modo normal" padrão no vi. Tipo:Legend

Etapa 2: O conteúdo de ~/legend_header.txtdeve ser adicionado onde está o cursor.

Eric Leschinski
fonte
0

Eu uso este comando no meu .vimrc para compilar e executar o código c:

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

, mas para suas necessidades, você pode colocar:

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

Você pode ter certeza de que o nome do arquivo exec será o nome da fonte sem a extensão .c.

Juan Miguel AR
fonte