Vim에 타임 스탬프를 삽입하는 가장 좋은 방법은 무엇입니까?


90

EditPad Lite에는 "2008-09-11 10:34:53"과 같은 타임 스탬프를 코드에 삽입 하는 멋진 기능 ( CTRL- E, CTRL- I)이 있습니다.

Vim에서이 기능을 얻는 가장 좋은 방법은 무엇입니까?

(저는 SSH를 통해 Linux 서버에서 Vim 6.1을 사용하고 있습니다. 현재 상황에서는 많은 사람들이 로그인을 공유하므로 타임 스탬프를 얻을 수있는 또 다른 기본 제공 방법이있는 경우 홈 디렉토리에 약어를 만들고 싶지 않습니다. )

답변:


87

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

그것을 시도, 그것은 내 Mac에서 작동합니다.

:r! date

생성 :

Thu Sep 11 10:47:30 CEST 2008

이:

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

생성 :

2008-09-11 10:50:56

1
약간의 참고로, 공간이 필요하지 않은 것 같습니다. ": r! date"도 작동합니다.
Jon Bringhurst 2011 년

@AB,이 질문을 훑어 보면서 : stackoverflow.com/questions/15394572/… , 백 슬래시로 탈출 할 수있는 것 같습니다. 나를 위해 그것을 시도 할 수 있습니까?
Daren Thomas

3
완전히 작동합니다. 작성하는 다른 방법은 :r!date "+\%F \%T"또는 :r!date +\%F\ \%T입니다.
chrisfargen '1311.21

이걸 내 vimrc에 넣으 러 갔는데 .. 몇 년 전에 이미 거기에 넣은 것을 알았습니다. 잘 작동합니다.
mgjk

페도라 31의 매력처럼 작동합니다. 감사합니다.
rchrd

115

크로스 플랫폼에서 작동하려면 다음을 입력하십시오 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>

이제 Vi / Vim 내에서 언제든지 F3을 누르면 2016-01-25 Mo 12:44커서에 삽입 된 것과 같은 타임 스탬프가 표시됩니다.

사용 가능한 매개 변수에 대한 완전한 설명은 C 함수 strftime ()문서를 확인하십시오 .


이 시스템 전체를 수행하는 방법이 있습니까 (리눅스에서)?
nilon

이 타임 스탬프를 파일 이름으로 사용하여 파일을 만들거나 저장하는 방법이 있습니까?
nilon 2019 년

감사합니다. F3는 이미 다른 용도로 사용되기 때문입니다. 구성 파일에 :Date다음을 추가하여 일반 모드에서 사용자 지정 명령을 정의했습니다 .. 새 줄에 날짜를 삽입합니다. 줄 바꿈없이 버전을 만들지 못했습니다. ~/.vimrccommand! Date put =strftime('%Y-%m-%d')
Paul Rougieux

1
@PaulRougieux 다음은 새 줄없이 날짜를 삽입하는 것입니다.command! Date :normal a<C-R>=strftime('%Y-%m-%d')<CR>
UnderBlue592

13

왜 모두가 사용하고 :r!있습니까? !!date명령 모드에서 빈 줄을 찾아 입력 합니다. 키 입력을 저장하십시오!

[nb 이것은 현재 행을 stdin으로 파이프 한 다음 해당 행을 명령 출력으로 대체합니다. 따라서 "빈 줄 찾기"부분.]


9

@Swaroop CH의 답변에 대한 확장으로,

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

표준 시간대 (실제로는 ISO-8601 호환 양식에서 UTC와의 차이)도 인쇄하는보다 간결한 양식입니다.

어떤 이유로 외부 도구를 사용하려는 경우

:r !date --rfc-3339=s

전체 RFC-3339 준수 타임 스탬프를 제공합니다. 사용하는 ns대신 s에 대한 스팍-등을 통해 정밀, 파이프 tr ' ' T대신 날짜와 시간 사이에 공백의 자본 T를 사용하는.

또한 다음 사항을 아는 것이 유용 할 수 있습니다.

:source somefile.vim

다음에서 명령을 읽습니다 somefile.vim. 이렇게하면 사용자 지정 매핑 집합 등을 설정 한 다음 해당 계정에서 vim을 사용할 때로드 할 수 있습니다.


strftime ()은 vim 내의 함수입니다. 당신은 또한 사용할 수 있습니다:put=strftime(""%FT%T%z")
Antonios Hadjigeorgalis

내 컴퓨터 (Windows 7, gvim 8.0.69)에서 % F 및 % T 지정자는 작동하지 않았지만 % Y- % m- % d 및 % H : % M : % S는 작동했습니다. ( cplusplus.com/reference/ctime/strftime 에 따르면 , % F 및 % T는 C99 용 strftime의 업데이트 된 버전과 함께 제공됩니다.) 또한 % z 지정자는 시간대에 대한 설명을 생성했습니다.
Ed Wynn

8

:아르 자형! 데이트

그런 다음 정확히 동일한 형식을 원하면 date 명령 (man date)에 형식을 추가하고 이것을 vim 별칭으로 추가 할 수도 있습니다.

:아르 자형! 날짜 + "\ % Y-\ % m-\ % d \ % H : \ % M : \ % S"

그러면 예제에서 보여준 형식이 생성됩니다 (셸의 날짜는 \ %를 사용하지 않고 % 만 사용하면 vim이 %를 현재 파일의 이름으로 대체하므로 이스케이프해야합니다).

예를 들어 F3을 누를 때마다 명령을 자동으로 입력하도록 .vimrc에 맵을 추가 할 수 있습니다.

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

(위에서 편집 :)) (편집 : 텍스트 부분을 코드로 변경하여

<F3> 

표시 가능)


4

유닉스 타임 스탬프의 경우 :

:아르 자형! 날짜 + \ % s

이 명령을 많이 사용하는 경우 VIM의 키 (예 : F12)에 매핑 할 수도 있습니다.

이것을 .vimrc에 넣으십시오.


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

4

로부터 빔 익명 .

F 키를 누르기 위해 손을 움직일 필요없이 이것을 사용합니다.

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

이제 삽입 모드에서 tds를 입력하고 스페이스 바를 누르거나 돌아 오자마자 날짜를 확인하고 계속 입력합니다.

나는 %b거기에 넣었 습니다. 왜냐하면 나는 월 이름을 보는 것을 좋아하기 때문입니다. 는 %F나에게 날짜를 기준으로 정렬 뭔가를 제공합니다. %Y%m%d단위 사이에 문자가 없도록 변경할 수 있습니다 .



0

이전 답변에 포함되지 않은 또 다른 빠른 방법 : type-

!!데이트


0

:Date현재 커서 위치에 날짜를 삽입 하는 사용자 지정 명령 (키 매핑이 아님)을 원했습니다 .

불행히도 간단한 명령 r!date은 새 줄을 생성합니다. 그래서 마침내 다음을 생각해 냈습니다.

command Date execute "normal i<C-R>=strftime('%F %T')<CR><ESC>"

새 줄을 추가하지 않고 커서 위치에 날짜 / 시간 문자열을 normal a추가합니다 (커서 위치 뒤에 추가 하도록 변경 ).


이것이 작동하는 동안 명령이 너무 복잡해 보이며이 작업을 수행하는 더 좋은 방법이 있어야한다고 생각합니다. 알고 계시다면 알려주세요 :)
luator
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.