Как скопировать несколько строк и вставить их как блок перед строкой? В качестве примера у меня есть следующий код, и я хочу скопировать и вставить три строки после оператора if, после оператора else, но перед строкой под ним.

[row col] = find(H);  
if (nargin < 4)    

    delqmn = sparse(row, col, 0, M, N); % diff of msgs from bits to checks
    delrmn = sparse(row, col, 0, M, N);% diff of msgs from checks to bits
    rmn0 = sparse(row, col, 0, M, N);% msgs from checks to bits (p=0)
else

// Insert 3 lines after if statement here

qn0 = 1-r;% pseudoposterior probabilities
qn1 = r;% pseudoposterior probabilities

Спасибо

2 ответа2

3

Вы можете найти много полезной информации от самого vim с помощью

:help registers

Вкратце, для копирования нескольких строк используйте: #yy где # - количество строк для копирования

Чтобы вставить эти строки, используйте P для вставки над курсором и p для вставки ниже.

Если вы копируете каждую строку за раз (выполняя yy три раза), вы копируете текст в три регистра. Чтобы вставить строки обратно, вы можете вставить из каждого из этих регистров знак "#p (где # - номер регистра). Это хороший метод, если скопированный текст не находится в непрерывном блоке.

0

Как уже писал Гептит, это основной материал. правила vimtutor .

Если вам интересно, вот несколько "продвинутых" способов сделать то, что вы хотите. Предполагая, что курсор находится на первой строке блока, который вы хотите дублировать, и вы set number , все приведенные ниже методы приводят к одинаковому результату. Конечно, можно комбинировать их отдельные части в соответствии с вашими потребностями, это далеко не полный список.

3yy/els<cr>p
    3yy      yank 3 lines starting with the current one
    /els<cr> position the cursor on else
    p        put the content of the default register after the cursor

y2j7Gp
    y2j      yank until 2 lines below
    7G       move the cursor to line 7
    p        put the content of the default register after the cursor

3yy}P
    3yy      yank 3 lines starting with the current one
    }        place the cursor on the next blank line        
    P        put the content of the default register before the cursor

V2j:t+3
    V2j      visually select linewise until 2 lines below
    :        enter command-line mode, a range is inserted for you
    t+3      copy the selected lines after line (current line + 3)

:4,6t7
    :        enter command-line mode
    4,6      the line numbers of the block you want to copy, see :help range
    t7       copy those lines after line 7

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .