EditPad Lite には、「2008-09-11 10:34:53」などのタイムスタンプをコードに挿入する優れた機能 ( CTRL- E、CTRL- ) があります。I
Vim でこの機能を取得する最良の方法は何ですか?
(私は SSH 経由で Linux サーバー上で Vim 6.1 を使用しています。現在の状況では、私たちの多くがログインを共有しているため、タイムスタンプを取得する組み込みの方法が他にある場合は、ホーム ディレクトリに省略形を作成したくありません。 )
クロスプラットフォームで動作させるには、以下を に追加します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() のドキュメントを確認してください。
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
なんでみんな使ってるの:r!
?空白行を見つけて、!!date
コマンド モードから入力します。キーストロークを節約!
[nb これにより、現在の行が stdin にパイプされ、その行がコマンド出力に置き換えられます。したがって、「空白行を見つける」部分です。]
@Swaroop C Hの回答の延長として、
^R=strftime("%FT%T%z")
は、タイム ゾーンも出力する、よりコンパクトな形式です (実際には、ISO-8601 準拠の形式での UTC との差)。
何らかの理由で外部ツールを使用したい場合は、
:r !date --rfc-3339=s
完全な RFC-3339 準拠のタイムスタンプを提供します。ns
スポックのような精度の代わりに使用し、日付と時刻の間のスペースの代わりに大文字の T を使用するためにs
パイプスルーします。tr ' ' T
また、次のことを知っておくと役立つ場合があります。
:source somefile.vim
からコマンドを読み込みますsomefile.vim
: このようにして、マッピングなどのカスタム セットを設定し、そのアカウントで vim を使用しているときにそれをロードできます。
:r! 日にち
まったく同じ形式が必要な場合は、date コマンド (man date) に形式を追加し、これを vim エイリアスとして追加することもできます。
:r! 日付 +"\%Y-\%m-\%d \%H:\%M:\%S"
これにより、例で示した形式が生成されます(シェルの日付は\%を使用せず、%のみを使用します。vimは%を現在のファイルの名前に置き換えるため、エスケープする必要があります)。
.vimrc にマップを追加して、たとえば F3 を押すたびにコマンドを自動的に配置できます。
:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>
(上から編集しました:))(編集:テキスト部分をコードに変更して、
<F3>
表示できます)
Vim Wikiaから。
F キーを押すために手を動かす代わりに、これを使用します。
:iab <expr> tds strftime("%F %b %T")
挿入モードでは、tds と入力するだけで、スペース バーを押すかリターンするとすぐに、日付を取得して入力を続けます。
%b
月の名前を見るのが好きなので、そこにを入れました。は%F
、日付でソートするものを提供します。%Y%m%d
ユニット間にキャラクターがいないように変更するかもしれません。
UNIX タイムスタンプの場合:
:r! 日付 +\%s
このコマンドを頻繁に使用する場合は、VIM のキー (F12 など) にこのコマンドをマップすることもできます。
これを .vimrc に入れてください:
map <F12> :r! date +\%s<cr>
以前の回答に含まれていない別の簡単な方法: type-
!!日にち