O Vim não exclui linhas subjacentes no Modo de Bloco Visual

0

No vim, pressionando Ctrl + V você pode entrar no modo de bloco visual. Quando seleciono várias linhas movendo-se com h, j, k e l e pressionando delete usando d ou D , o texto é excluído, mas o subjacente as linhas permanecem lá.

O que significa que, embora o texto tenha desaparecido, o código circundante ainda está muito espaçado.

Existe alguma maneira de excluir as linhas + o texto?

    
por Aman 25.11.2016 / 10:37

2 respostas

7

Se você quiser selecionar linhas use o modo visual linewise ( V ). Se você quiser selecionar caracteres , use o modo visual de caractere ( v ). Se você quiser selecionar um bloco retangular, use o modo visual de bloco ( Ctrl-V ).

Excluir um bloco retangular visual não exclui as linhas. Este é o comportamento esperado. Se você quiser selecionar linhas visualmente e excluí-las, use o modo visual linewise ( V ), selecione as linhas com j e k (ou seta para baixo e seta para cima) e pressione d para excluir eles.

    
por 25.11.2016 / 10:44
0

Eu uso essa função em um autocmd que antes de salvar um arquivo remove espaços e linhas vazias.

" Removes trailing whitespace and blank lines leaving 1 blank line between functions.

function! TrimWhitespace()

    " skip these filetypes
    if (&ft=='markdown' || &ft=='help')
        return
    endif
    let l:save = winsaveview()
    " remove whitespace
    %s/\s\+$//e
    " remove blank lines
    %s/\(\s*\n\)\{3,}/\r\r/ge
    call winrestview(l:save)
endfunction

command! TWs call TrimWhitespace()

" this autocmd is called when any of the following files is saved

" edit filetypes as needed.

au BufWritePre *.c,*.sh,*.h,*.vim,*.vimrc,*.txt,*.local,.*rc,.*profile :TWs
    
por 15.07.2017 / 16:18

Tags