Vim - отображение с необязательным префиксом регистра - PullRequest
3 голосов
/ 31 марта 2012

Итак, я обнаружил, что общая задача для меня в Vim - это PUT либо в начало строки, либо в конец строки.Таким образом, мое отображение может быть таким:

nmap <Leader>p $p
nmap <Leader>P 0P

Однако, что я действительно хотел бы сделать, так это по желанию включить регистр перед установкой.

Так, например, "a, P поместит из регистра a в начало строки.

Есть ли способ сделать это с отображением?

Ответы [ 2 ]

5 голосов
/ 31 марта 2012

Вы можете сделать это, используя <expr> отображение в одну строку:

nnoremap <expr> \p '$"'.v:register.v:count1.'p'
nnoremap <expr> \P '0"'.v:register.v:count1.'P'
2 голосов
/ 31 марта 2012

Это вполне возможно.Сначала я подумал, что это решение возможно: https://stackoverflow.com/a/290723/15934,, но <expr> не позволит нам перемещать курсор, как мы хотим, и normal не может быть использовано.

Тем не менее, мы можем сделать это:

function! s:PutAt(where)
  " <setline($+1> appends, but <setline(0> does not insert, hence the hack
  " with getline to build a list of what should be at the start of the buffer.
  let line = a:where ==1 
        \ ? [getreg(), getline(1)]
        \ : getreg()
  call setline(a:where, line)
endfunction

nnoremap <silent> <leader>P :call <sid>PutAt(1)<cr>
nnoremap <silent> <leader>p :call <sid>PutAt(line('$')+1)<cr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...