vim: Как мне сопоставитьдобавить метку времени к текущему слову, на котором находится курсор? - PullRequest
2 голосов
/ 01 июня 2019

В vim, когда я нажимаю F5, я хочу добавить отметку времени непосредственно перед словом, на котором находится курсор.

Например: если у меня есть файл со следующим текстом:

the quick brown
fox jumps
over the lazy
dog

и я нажимаю F5, когда мой курсор находится на любой из букв в слове jumps, затем я хочу добавить отметку времени непосредственно перед словом 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>

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

Самый безопасный вариант - использовать визуальный режим здесь:

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>

То есть перейти в визуальный режим, выбрать внутреннее СЛОВО, перейти к началу выделения, завершить визуальный режим, поставить strftime ().

1 голос
/ 01 июня 2019

Попробуйте это:

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>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...