Pergunta

EditPad Lite tem um recurso interessante (CTRL-E, CTRL-Eu), que insere um carimbo de hora e.g."2008-09-11 10:34:53" no seu código.

Qual é a melhor maneira de obter essa funcionalidade no Vim?

(Eu estou usando o Vim 6.1 em um servidor Linux via SSH.Na situação actual, um número de nós compartilhar um login, de modo que eu não quero criar abreviaturas no diretório home, se há outra maneira interna para obter um carimbo de data / hora.)

Foi útil?

Solução

http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/

Tentei sair, ele funciona no meu mac:

:r! date

produz:

Thu Sep 11 10:47:30 CEST 2008

Este:

:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"

produz:

2008-09-11 10:50:56

Outras dicas

Para fazê-lo funcionar cruz-plataforma, basta colocar o seguinte no seu vimrc:

nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>

Agora você pode apenas pressionar F3 qualquer momento dentro do Vi/Vim e você receberá um carimbo de data / hora como 2016-01-25 Mo 12:44 inserido na posição do cursor.

Para uma descrição completa dos parâmetros disponíveis, verifique o documentação da função C strftime().

Porque está todo mundo usando :r!?Encontrar uma linha em branco e tipo de !!date a partir de comando de modo.Salvar um pressionamento de tecla!

[n.b.Isto irá canalizar a linha atual no stdin e, em seguida, substitua a linha com o comando de saída;daí a "encontrar uma linha em branco e a parte".]

Como uma extensão do @Swaroop C H a resposta,

^R=strftime("%FT%T%z")

é uma forma mais compacta que também irá imprimir a zona de tempo (na verdade, a diferença entre a UTC, em um ISO-8601-compatível com o formulário).

Se você preferir usar uma ferramenta externa, por algum motivo,

:r !date --rfc-3339=s

vai dar a você uma RFC-3339 compatível com o carimbo de data / hora;utilização ns em vez de s para Spock-como a precisão, e a tubulação através tr ' ' T para usar um capital de T em vez de um espaço entre a data e a hora.

Você também pode achar útil saber que

:source somefile.vim

vai ler em comandos de somefile.vim:desta forma, você pode configurar um conjunto personalizado de mapeamentos, etc., e, em seguida, carregá-lo quando você estiver usando o vim no que conta.

de :r!data

Em seguida, você pode adicionar o formato para o comando date (data homem) se você deseja exatamente o mesmo formato e adicionar este como vim alias bem

de :r!data +"\%Y-\%m-\%d \%H:\%M:\%S"

Que produz o formato que você mostrou no seu exemplo (data em que o shell não use \%, mas apenas %, vim substitui % por o nome do arquivo atual, de modo que você precisa para escapar dele).

Você pode adicionar um mapa no seu .vimrc para ele colocar o comando automaticamente, por exemplo, cada vez que você pressionar F3:

:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>

(Editado a partir de cima :) ) (Edição:alterar o texto parte de um código, de modo que

<F3> 

pode ser exibido)

Ter um olhar para a ponta dedicado para a data e hora de inserção/atualização sobre o vim.a wikia.

Para um unix timestamp:

:r! date +\%s

Você também pode mapear esse comando para uma chave (por exemplo F12) no VIM, se você usá-lo muito:

Coloque isso no seu .vimrc:


map  <F12> :r! date +\%s<cr>

Do Vim Wikia.

Eu uso isso em vez de ter que mover a minha mão para bater uma tecla F:

:iab <expr> tds strftime("%F %b %T")

Agora, no modo de Inserção é apenas o tipo de tds e assim que eu bater a barra de espaço ou de devolução, a data e a continuar a escrever.

Eu coloquei o %b de lá, porque eu gosto de ver o nome do mês.O %F dá-me algo para ordenar por data.Eu poderia mudar isso para %Y%m%d portanto, não há nenhum caracteres entre as unidades.

Outra forma rápida não incluídos por respostas anteriores:tipo-

!!data

Unix,use:

!!date

O Windows, use:

!!date /t

Mais detalhes:ver Insert_current_date_or_time

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top