我希望:'<,'>s/^\ \ \ \ //
以缩写形式执行类似的事情,例如:'<,'>s_lw
(无论实际上是什么s_lw
)使用vim
基本功能,最初尝试不依赖于扩展,例如CommandAlias :为 vim 命令创建别名。
是否可以?
答案1
您可以使用命令行模式缩写为了那个原因:
:cnoreab s_lw s/^\ \ \ \ //
缩写相对于映射 ( ) 的优势:cnoremap
在于,您仍然可以键入它(例如在搜索中),而不会无意中扩展它。
答案2
您给出的例子可能可以用来完成<
。
无论如何,您可以使用自定义命令:
" 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}//
或者像 Ingo 的答案中的命令行模式缩写。