加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

记事本像VIM中的“多重编辑”一样?

发布时间:2020-12-15 19:19:54 所属栏目:安全 来源:网络整理
导读:我从记事本切换到VIM作为主文本编辑器。 记事本可以通过按住ctrl并单击文本中的任何位置来拥有多个光标,因此如果键入,文本将显示在多个位置。 是否有可能在vim?在视觉模式下选择多行后,可以在文本中的任意位置放置光标。 这是我很少使用的功能,也很容易
我从记事本切换到VIM作为主文本编辑器。

记事本可以通过按住ctrl并单击文本中的任何位置来拥有多个光标,因此如果键入,文本将显示在多个位置。

是否有可能在vim?在视觉模式下选择多行后,可以在文本中的任意位置放置光标。

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

没有这样的内置功能。

让我建议一个重复命令的函数(例如,重复最后一个)
更改命令)在给定标记的位置。标记和命令都是
指定为字符串参数。标记指定的方式范围定期
定义表达式或scanf格式说明符。例如,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

在您的情况下,可以使用以下功能。

>使用Vim标记所有地方同时插入(除了一个)
标记(通过m命令)。
>实际在一个未标记的地方插入文字。
>运行功能:

:call MarksRepeat(?marks?,'.')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读