vim: biblioteca de substituições comuns sem plugins?

1

Eu estaria querendo realizar pensamentos como :'<,'>s/^\ \ \ \ // de uma forma abreviada, como :'<,'>s_lw (não importa o que realmente seria s_lw ) usando a funcionalidade vim base, inicialmente tentando não confiar em extensões como CommandAlias: crie aliases para o comando vim .

É possível?

    
por uprego 30.09.2014 / 13:38

2 respostas

2

Você pode usar o modo de linha de comando abreviações para isso:

:cnoreab s_lw s/^\ \ \ \ //

A vantagem de abreviações sobre mapeamentos ( :cnoremap ) é que você ainda pode digitar isso (por exemplo, dentro de uma pesquisa) sem expandi-lo acidentalmente.

    
por 30.09.2014 / 13:54
1

O exemplo que você deu provavelmente poderia ser feito com < .

De qualquer forma, você pode usar um comando personalizado:

" remove 4 leading spaces on the current line or a range
command! -range=% SLW execute <line1> . ',' . <line2> . 's/^ \{4}//'

" usage 1:
    foo
:SLW<CR>
foo

" usage 2:
    foo
    bar
vj
:'<,'>SLW<CR>
foo
bar

" usage 3:
    foo
    bar
:,+SLW<CR>
foo
bar

um mapeamento de modo visual:

xnoremap ,slw :s/^ \{4}//<CR>

ou um mapeamento de modo de linha de comando:

cnoremap slw s/^ \{4}//

ou uma abreviação de modo de linha de comando como na resposta de Ingo.

    
por 30.09.2014 / 13:59