Como inserir a data no vim

23

No vim, você pode executar comandos com "!". Você pode combinar isso com "r" para inserir a saída no seu buffer atual.

Data:
20 de julho, 09:39:26 SAST 2012

irá inserir a data em um arquivo.

Agora, quando tento fazer coisas mais interessantes, como data com formato diferente +% F. Na linha de comando

$ data +% F
20/07/2012

In vim

: r! date "+% F"
message.to.followup.lstF

Qual coloca o nome do arquivo e coloca F depois dele. de algum modo como o r! date "+% F" está sendo expandido no vim e não é executado na linha de comando. O que eu preciso fazer para executar isso para que ele coloque o conteúdo no vim.

Talvez o vim tenha uma maneira melhor de inserir datas nos arquivos.

nelaaro
fonte
possível duplicado: stackoverflow.com/questions/6344750/…
Ciro Santilli escreveu:
Aqui está outra resposta válida usando <F3>. Você precisará modificá vimrc-lo para obter qualquer formato de data que desejar, automatizado .
nilon 5/09

Respostas:

21

O Vim tem uma strftime()função interna . Tente isto (no modo de inserção):

<C-r>=strftime('%F')<CR>
Heptite
fonte
11
Estou escolhendo sua resposta, pois é a maneira mais divertida de fazer as coisas.
Nelaaro
11
E no modo normal este é o mesmo (inserir data na posição atual ): "=strftime("%F")<CR>P(Fonte: vim.wikia.com/wiki/Insert_current_date_or_time )
erik
19

Continuei experimentando até descobrir que o vim estava expandindo o caractere "%". Então apenas escape "\%" e tudo funcionará como eu esperava.

: r! date "+ \% F"
20/07/2012

Agora eu posso colocar datas em arquivos como eu gostaria de

: r! date "+ \% F" -d "-2 dia"
18/07/2012

nelaaro
fonte
11
+1 Que você pode usar com outros programas além de outros datee, portanto, é mais fácil lembrar do que o conteúdo interno do "strftime".
math
10

Outro método, sem escapar, usando system():

system('date +%F')

No modo INSERIR :

<C-r>=system('date +%F')<CR>

No modo NORMAL :

:put=system('date +%F')<CR>
romainl
fonte
11
<Cr> é muito útil, eu gostaria de ter passado mais tempo lendo a ajuda no vim.
Nelaaro 20/07
11
Nunca é tarde demais.
Romainl