V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sdjl
V2EX  ›  程序员

vim 编辑 HTML 文件时,如何实现修改<div>名称时,自动修改</div>为对应名称? [tagalong 有 Bug]

  •  
  •   sdjl · 2023-02-23 16:44:32 +08:00 · 1873 次点击
    这是一个创建于 648 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如有:

    <div> <span></span> </div>
    

    当把第一个<div>修改为<p>时,</div>也会自动改为</p>,结果为:

    <p> <span></span> </p>
    

    我之前一直用 AndrewRadev/tagalong.vim 插件实现此功能,但我发现这个插件有一个 bug 。

    bug 表现为:

    当我用 y 命令复制一些内容后,如果我在使用 p 命令之前先按下 i 进入插入模式,输入一个空格,再按 Esc ,然后此时按下 p 会粘贴一堆乱码。

    所以,有没有其他类似的替代品?

    谢谢!

    20 条回复    2023-02-24 14:23:59 +08:00
    sdjl
        1
    sdjl  
    OP
       2023-02-23 16:45:03 +08:00
    什么贵? 我写的 html 标签去哪里了?
    sdjl
        2
    sdjl  
    OP
       2023-02-23 16:53:09 +08:00
    好吧,第一写 html 标签,需要用``包裹 html 代码才能正常显示~
    wangtian2020
        3
    wangtian2020  
       2023-02-23 16:56:13 +08:00
    替代品是指替代软件吗,vscode 一直是自动修改匹配的标签对的
    sdjl
        4
    sdjl  
    OP
       2023-02-23 16:57:47 +08:00
    @wangtian2020 不是呢,是指 vim 的插件

    我叫 ChatGPT 帮我写一个插件,结果它的代码不可行~
    yuhangch
        5
    yuhangch  
       2023-02-23 17:04:18 +08:00
    ViriF
        6
    ViriF  
       2023-02-23 17:12:37 +08:00   ❤️ 1
    tpope/vim-surround

    cst<
    #自动弹出 prompt
    :p<CR>
    sdjl
        7
    sdjl  
    OP
       2023-02-23 17:15:42 +08:00
    @yuhangch 谢谢

    我刚尝试添加 let g:tagalong_mappings = ['c', 'C', 'i', 'a'] 配置,bug 依然存在呢
    sdjl
        8
    sdjl  
    OP
       2023-02-23 17:18:00 +08:00
    @ViriF

    谢谢,vim-surround 插件我也装了的,实在不行就只能用这个替代了
    N9f8Pmek6m8iRWYe
        9
    N9f8Pmek6m8iRWYe  
       2023-02-23 17:38:33 +08:00
    idea 可以自动编辑标签对,可以试试
    yuancoder
        10
    yuancoder  
       2023-02-23 17:49:31 +08:00   ❤️ 1
    surround 插件 :
    cst 修改标签
    wangjw
        11
    wangjw  
       2023-02-23 17:51:53 +08:00
    vscode 有个 "auto rename tag" 插件可以试试
    wangjw
        12
    wangjw  
       2023-02-23 17:53:24 +08:00
    sorry ,没看到 'vim',请忽略
    yuuko
        13
    yuuko  
       2023-02-23 18:05:07 +08:00
    装个 html lsp ,只要你用的 lsp 客户端支持 linked editing ,修改标签会帮你自动修改
    acdfjelxe
        14
    acdfjelxe  
       2023-02-24 01:07:20 +08:00   ❤️ 1
    sdjl
        15
    sdjl  
    OP
       2023-02-24 10:48:06 +08:00
    @acdfjelxe 谢谢,目前还没有切换到 nvim 的计划,不过感觉快了
    justgodlike1993
        16
    justgodlike1993  
       2023-02-24 11:29:00 +08:00   ❤️ 1
    mattn/emmet-vim <C-y>u
    sdjl
        17
    sdjl  
    OP
       2023-02-24 13:04:20 +08:00
    @justgodlike1993 "mattn/emmet-vim <C-y>u"

    谢谢,这个也行的。
    dragondove
        18
    dragondove  
       2023-02-24 13:53:29 +08:00
    @acdfjelxe 这个插件不支持 x/p 之类的操作比较难受,treesitter 目前也有性能问题
    tool2d
        19
    tool2d  
       2023-02-24 13:57:04 +08:00   ❤️ 1
    如果是低频修改 html ,有没有 auto rename 功能,对效率影响并不大。也可以用 vscode 修改。

    如果是高频使用,你可以用</auto>来进行关键词自动推导。或者用 yaml 这种没有结尾符的格式,动态编译成 html 。
    fannheyward
        20
    fannheyward  
       2023-02-24 14:23:59 +08:00   ❤️ 1
    LSP 的 Linked Editing ,直接 `cw` 就是。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3541 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.