EditPad Liteには、タイムスタンプ(例: "2008-09-11 10:34:53"をコードに挿入する機能(CTRL- E、CTRL- I)が備わっています。
Vimでこの機能を使用するための最良の方法は何ですか?
(私はSSHを介してLinuxサーバーでVim 6.1を使用しています。現在の状況では、多くの人がログインを共有しているため、タイムスタンプを取得する別の組み込みの方法がある場合、ホームディレクトリに略語を作成したくありません。 )
EditPad Liteには、タイムスタンプ(例: "2008-09-11 10:34:53"をコードに挿入する機能(CTRL- E、CTRL- I)が備わっています。
Vimでこの機能を使用するための最良の方法は何ですか?
(私はSSHを介してLinuxサーバーでVim 6.1を使用しています。現在の状況では、多くの人がログインを共有しているため、タイムスタンプを取得する別の組み込みの方法がある場合、ホームディレクトリに略語を作成したくありません。 )
回答:
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
それを試してみました、それは私のマックで動作します:
: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 "+\%F \%T"
または:r!date +\%F\ \%T
です。
クロスプラットフォームで機能させるには、次のコードをに追加します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()のドキュメントを確認してください。
:Date
次のコードを~/.vimrc
構成ファイルに追加して、通常モードでカスタムコマンドを定義しましたcommand! Date put =strftime('%Y-%m-%d')
。新しい行に日付を挿入します。改行なしのバージョンを作成できませんでした。
なぜみんなが使っているの:r!
?空白行を見つけて、!!date
コマンドモードから入力します。キーストロークを保存してください!
[nbこれは、現在の行をstdinにパイプし、その行をコマンド出力に置き換えます。したがって、「空白行を見つける」部分です。]
@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を使用しているときにそれをロードできます。
:put=strftime(""%FT%T%z")
:r!日付
次に、完全に同じ形式が必要な場合は、日付コマンド(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
ユニット間にキャラクターがいないように変更するかもしれません。
:Date
現在のカーソル位置に日付を挿入するための(キーマッピングではなく)カスタムコマンドが必要でした。
残念ながら、次のような単純なコマンドr!date
は、新しい行になります。だから最後に私は次のことを思いつきました:
command Date execute "normal i<C-R>=strftime('%F %T')<CR><ESC>"
新しい行を追加せずに、カーソル位置に日付/時刻文字列をnormal a
追加します(カーソル位置の後に追加するように変更)。