1

Я хотел бы выполнить мысли вроде :'<,'>s/^\ \ \ \ // в сокращенной форме, например :'<,'>s_lw (независимо от того, что на самом деле было бы этим s_lw), используя базовую функциональность vim , изначально пытаясь не полагаться на расширения, такие как CommandAlias: создать псевдонимы для команды vim.

Является ли это возможным?

2 ответа2

2

Вы можете использовать сокращения режима командной строки для этого:

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

Преимущество сокращений перед отображениями (:cnoremap) заключается в том, что вы все равно можете набирать его (например, в поиске) без его непреднамеренного расширения.

1

Пример, который вы приводите, вероятно, можно сделать с помощью < .

В любом случае, вы можете использовать пользовательскую команду:

" 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

отображение визуального режима:

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

или отображение режима командной строки:

cnoremap slw s/^ \{4}//

или сокращение от командной строки, как в ответе Инго.

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