Как я могу определить отображение клавиш в vim и использовать номер повтора более одного раза? - PullRequest
0 голосов
/ 07 июня 2018

Я редактирую файлы с относительными номерами строк.Часто я хотел бы скопировать строку из, скажем, 16 строк выше в текущее местоположение.

В обычном режиме я бы ввел: 16kyy16jP

Но когда это строка 14, это: 14kyy14jP

Как определить назначение клавиш / команду, чтобы можно было вводить что-то вроде 16LK или 14LK в обычном режиме для достижения того же результата?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Вы можете отобразить вызов функции, который принимает входные параметры.

function! YourMap(n) 
    exec 'normal! '.a:n.'-Y'.a:n.'+P'
endfunction
nnoremap <leader>c :call YourMap(input('lines:')) <CR>

Вы нажимаете <leader>c, затем вводите относительные номера строк, копирование / вставка должна быть выполнена.

<leader>c является ключом сопоставления, вы можете изменить его на другие комбинации клавиш.

0 голосов
/ 07 июня 2018

16kyy16jP

Какие отходы ... Вы можете использовать :help :t вместо:

:-16t.
:-14t.
0 голосов
/ 07 июня 2018

Может быть что-то вроде

nnoremap <silent> µ :<c-u>exe "normal! ".v:count1."kyy".v:count1."jP"<cr>

Но, честно говоря, я бы использовал здесь функции, так как не нужно слишком много перемещаться:

nnoremap <silent> µ :<c-u>call append(line('.')-1, getline(line('.')-v:count1))<cr>

Обратите внимание, что следующеетакже работает благодаря :yank

nnoremap <silent> µ :<c-u>exe '-'.v:count1.'y'<cr>P

РЕДАКТИРОВАТЬ: я не знал о :t, ответ @ romainl (с патчем @ Кент) имеет больше смысла, чем мой.Если вам нужно отображение, это может быть режим с:

nnoremap <silent> µ :<c-u>exe '-'.v:count1.'t-1'<cr>
" which isn't much different than the previous answer.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...