Tôi không chắc chắn về hành vi chính xác của Notepad ở đây. Mặc dù tôi không biết cách thực hiện vim
điều đó dựa trên một số văn bản hiện có trong một tệp, tôi có thể thực vim
hiện một thao tác tương tự cho các tệp của một tiện ích mở rộng nhất định, bằng cách thêm phần này vào ~/.vimrc
:
au BufWritePre *.log :normal G"=strftime("\n%b %d, %Y %X\n")^Mp
Giải trình:
au
- là viết tắt của AutoCommand
, vim
cách thực hiện một số hành động cho một số sự kiện.
BufWritePre
- vim
sự kiện cho ngay trước khi viết ra một tập tin.
*.log
- các tệp để thực hiện việc này (bạn có thể chọn một tiện ích mở rộng khác)
:normal
- Chuyển sang chế độ bình thường (chế độ bạn thường ở khi bắt đầu vim
)
G
- đi đến dòng cuối cùng
"=strftime("\n%b %d, %Y %X\n")^M
- Vào bộ đệm mặc định ( "
), sao chép đầu ra của strftime
hàm (đây ^M
là một dòng mới bằng chữ, thu được bằng cách nhấn CtrlV, sau đó Enter)
p
- sau đó dán bộ đệm.
Mỗi lần tôi viết tệp bằng cách sử dụng :w
, ngày hiện tại sẽ được thêm vào tệp:
$ vim test.log
$ vim test.log
$ cat test.log
I did some work.
Oct 26, 2014 01:15:55 IST
Didn't I?
Oct 26, 2014 01:16:02 IST
Điều này là khá tùy biến. Bạn có thể chọn tiện ích mở rộng tệp của mình, bỏ qua G
nếu bạn muốn nối ngày sau dòng hiện tại, sửa đổi định dạng thời gian, sử dụng các sự kiện khác (xem :h autocmd-events
).