No XCode, há um complemento chamado vvdocument, que pode detectar três ocorrências /
e transferir ///
para:
/*!
* @author Robbie Yi JIANG, 29-Jan-2016 14:01:45
*
*
*/
Como posso fazer isso no Vim.
fonte
No XCode, há um complemento chamado vvdocument, que pode detectar três ocorrências /
e transferir ///
para:
/*!
* @author Robbie Yi JIANG, 29-Jan-2016 14:01:45
*
*
*/
Como posso fazer isso no Vim.
O método na minha resposta anterior não se transforma bem em conteúdo dinâmico. É aqui que entram os plug-ins de trechos como UltiSnips e SnipMate. Vou fornecer uma demonstração do UltiSnips aqui. Instale-o usando seu método favorito em Como instalar um plug-in no vim / vi?
Agora, crie um UltiSnips
diretório no seu diretório .vim
ou _vimfiles
. Nele, coloque um c.snippet
arquivo contendo:
snippet /// "My header" A
/*!
* @author Robbie Yi JIANG, `date +'%d-%b-%Y %T'`
*
*
*/
endsnippet
Agora, se você abrir um arquivo C e digitar ///
, ele deverá ser substituído automaticamente pelo cabeçalho, incluindo a data e a hora atuais. É isso aí!
Normalmente, o UltiSnips insere um trecho quando você pressiona Tab. Aqui, especificamos que o snippet deve ser inserido automaticamente - é o que A
indica no final da primeira linha. Confira :help UltiSnips-syntax
mais informações sobre como escrever snippets.
A maioria das pessoas, no entanto, começa com uma coleção de trechos, como vim-snippets
. Há muitos para descrever aqui, mas alguns deles podem ser muito úteis.
Uma maneira seria criar um arquivo contendo esse trecho e lê-lo quando você digita
///
.Por exemplo, crie
~/.vim/snippets/my_header.snip
contendo esse cabeçalho. Em seguida, defina este mapeamento:Ou:
No primeiro mapeamento, seu cursor será colocado na primeira linha do texto inserido; e no segundo, o cursor será colocado abaixo do texto inserido.
Talvez o mapeamento mais simples, em termos de alternância de modos, seja:
Para uso mais geral, convém procurar plug-ins de trechos. UltiSnips e SnipMate são dois populares. Eu também não uso, então não vou recomendar um.
fonte
Escreva uma função que retorne a string e chame-a.
Os detalhes
strftime
dependem da sua plataforma, se você não estiver no Windows e não estiver funcionando, será necessárioman strftime
descobrir os argumentos.Isso funciona no modo de inserção, mas faz coisas estranhas no processamento da barra. Se você estiver fazendo
//
comentários no estilo C ++ , a segunda barra não será exibida até que você digite um espaço ou algo depois dela.O
<C-R>=
insere uma expressão na posição do cursor. OInsertHeader()<Enter>
bit é a expressão que é avaliada. Eu construo a string linha por linha na função,.
é concatenação de string e\
é o caractere de continuação de linha (onde continuation diz "combine isso com a linha anterior", em contraste com o modo como C e sua família o fazem). Finalmente, duas<C-O>
operações, uma para subir duas linhas e outra para o final da linha, onde presumivelmente um comentário de arquivo será inserido; observe o espaço no final da string na quarta linha del:header
.fonte