Colar várias linhas antes de uma linha no vim?

0

Como faço para copiar várias linhas e colá-las como um bloco antes de uma linha? Como exemplo, tenho o seguinte código e quero copiar e colar as três linhas após a declaração if após a instrução else, mas antes da linha abaixo dela.

[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

Obrigado

    
por Umar 06.12.2012 / 05:36

2 respostas

3

Você pode encontrar muitas informações úteis do próprio vim com

:help registers

Resumidamente, para copiar várias linhas, use: #yy , em que # é o número de linhas a serem copiadas

Para colar essas linhas, use P para colar acima do cursor e p para colar abaixo.

Se você copiar cada linha por vez (fazendo yy três vezes), copiará o texto em três registros. Para colar as linhas de volta, você pode colar cada um desses registros com "#p (onde # é o número do registro). Esse é um bom método se o texto copiado não estiver em um bloco contíguo.

    
por 06.12.2012 / 05:52
0

Como Heptite já escreveu, isso é básico. vimtutor rules.

Caso você esteja curioso, aqui estão algumas maneiras um pouco "avançadas" de fazer o que você deseja. Supondo que seu cursor esteja na primeira linha do bloco que você deseja duplicar e você tenha set number , todos os métodos abaixo levam ao mesmo resultado. É claro que é possível combinar suas partes individuais para atender às suas necessidades, isso é longe de ser uma lista exaustiva.

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
    
por 06.12.2012 / 09:58

Tags