Notepad ++喜欢VIM中的"多重编辑"吗?

pro*_*o-n 19 vim notepad++

我正在从Notepad ++切换到VIM作为主文本编辑器.

通过按住ctrl并单击文本中的任意位置,Notepad ++可以有多个游标,因此如果键入,文本将显示在多个位置.

在vim中有可能吗?在可视模式下选择多行之后插入的东西,但可以在文本中的任何位置使用游标.

这是我很少使用的功能,也很容易避免,我只是很好奇,因为它是唯一一个我无法在vim中找到它的替代品.

ib.*_*ib. 6

没有这种内置功能.

让我建议一个.在给定标记的位置重复命令(例如重复上一个更改命令)的函数.标记和命令都指定为字符串参数.在正则表达式或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)

在您的情况下,该功能可以如下使用.

  1. 使用Vim标记(通过m命令)标记所有同时插入的位置(除了一个).
  2. 实际上在一个尚未标记的地方插入文本.
  3. 运行功能:

    :call MarksRepeat(‹marks›, '.')
    
    Run Code Online (Sandbox Code Playgroud)


And*_*ett 5

您可以在一个操作中将文本插入一个位置,然后使用.在您想要文本的其他位置重复插入.

这与你要求的相反,因为你想在输入文本之前标记位置,但它在相同数量的击键中给你相同的结果:).