Como adicionar um comando no editor vim?

73

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 de forma que, se eu digitar ": debug", o comando acima será executado? Como faço para isso?

    
por Abhijeet Rastogi 09.01.2010 / 14:26

4 respostas

88

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

The Vim editor enables you to define your own commands. You execute these commands just like any other Command-line mode command. To define a command, use the ":command" command, as follows:

:command DeleteFirst 1delete

Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which deletes the first line.

Note: User-defined commands must start with a capital letter. You cannot use ":X", ":Next" and ":Print". The underscore cannot be used! You can use digits, but this is discouraged.

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

Se você quiser que seja definido apenas para um arquivo ou para determinados arquivos, será necessário um autocommand.

    
por 09.01.2010 / 14:56
14

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

    
por 09.01.2010 / 14:48
4

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

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

Passo 1: Coloque esta linha em um arquivo chamado ~ / legend_header.txt '

this text will be added

Passo 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ê está feito.

Teste-o

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

Passo 2: O conteúdo de ~/legend_header.txt deve ser adicionado onde o cursor está.

    
por 01.05.2013 / 16:31
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 as 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.

    
por 13.11.2017 / 21:48

Tags