在vim中,当我按F5键时,我希望它在光标所在的单词之前添加一个时间戳。
例如:如果我有一个带有以下文本的文件:
the quick brown
fox jumps
over the lazy
dog
,然后我将光标放在单词jumps
上的任何字母上时按F5键,然后我希望它在单词jumps
之前添加一个时间戳,如下所示:
the quick brown
fox [ 12:34:50 20190531 ] jumps
over the lazy
dog
如果我将光标移动到单词dog
中的任何字母上并按F5,则希望它看起来像这样:
the quick brown
fox [ 12:34:50 20190531 ] jumps
over the lazy
[ 12:34:58 20190531 ] dog
我目前在我的.vimrc中有这些行,无论光标在哪里,它们都会添加一个时间戳,但是我希望它更聪明一些,并在光标所在的当前单词之前添加时间戳:
nmap <F5> i<C-R>=strftime("[ %H:%M:%S %Y%m%d ] ")<CR>
imap <F5> <C-R>=strftime("[ %H:%M:%S %Y%m%d ] ")<CR>
答案 0 :(得分:2)
最安全的选择是在此处使用可视模式:
nnoremap <F5> viWo<Esc>"=strftime("[ %H:%M:%S %Y%m%d ] ")<CR>gP
inoremap <F5> <C-O>viWo<Esc><C-R>=strftime("[ %H:%M:%S %Y%m%d ] ")<CR>
也就是说,进入可视模式,选择内部WORD,转到选择的开始,结束可视模式,放入strftime()。
答案 1 :(得分:1)
尝试以下方法:
nnoremap <F5> T<space>i<C-r>=strftime("[ %H:%M:%S %Y%m%d ] ")<cr><esc>
inoremap <F5> <C-o>T<space><C-r>=strftime("[ %H:%M:%S %Y%m%d ] ")<cr>
由于大写字母T<space>
,它使用t
向后移动(T
/ T
)下一个空格。明确的空格(也可以使用,使用
<space>
突出显示。