我正在从Notepad ++切换到VIM作为主文本编辑器.
通过按住ctrl并单击文本中的任意位置,Notepad ++可以有多个游标,因此如果键入,文本将显示在多个位置.
在vim中有可能吗?在可视模式下选择多行之后插入的东西,但可以在文本中的任何位置使用游标.
这是我很少使用的功能,也很容易避免,我只是很好奇,因为它是唯一一个我无法在vim中找到它的替代品.
没有这种内置功能.
让我建议一个.
在给定标记的位置重复命令(例如重复上一个更改命令)的函数.标记和命令都指定为字符串参数.在正则表达式或scanf
-format说明符中的方式范围中指定的标记已定义.例如,za-dx
意味着标记z
,a
,b
,c
,d
,x
.
function! MarksRepeat(marks, command)
let pos = 0
let len = strlen(a:marks)
let alpha = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
let beta = '1234567899bcdefghijklmnopqrstuvwxyzzBCDEFGHIJKLMNOPQRSTUVWXYZZ'
while pos < len
if a:marks[pos + 1] != '-'
exe 'norm `' . a:marks[pos] . a:command
let pos += 1
elseif a:marks[pos] <= a:marks[pos+2]
let mark = a:marks[pos]
let stop = a:marks[pos+2]
if mark =~ '[0-9a-zA-Z]' && stop =~ '[0-9a-zA-Z]'
while 1
exe 'norm `' . mark . a:command
if mark == stop
break
endif
let mark = tr(mark, alpha, beta)
endwhile
endif
let pos += 3
endif
endwhile
endfunction
Run Code Online (Sandbox Code Playgroud)
在您的情况下,该功能可以如下使用.
m
命令)标记所有同时插入的位置(除了一个).运行功能:
:call MarksRepeat(‹marks›, '.')
Run Code Online (Sandbox Code Playgroud)