用超过 1 个字符包围视觉文本

问题描述 投票:0回答:3

如何使用 tpope 的 Vim Surround 将以下文本用

3 个反引号
``` 括起来。

我所能做的就是在视觉模式下使用 S`

1 个反引号

vim vim-plugin
3个回答
10
投票

这不是你要求的,但这可以在没有环绕声的情况下完成:

(from visual mode)
c
```
<C-r>"
```
<Esc>

参见

:help i_CTRL-R

  1. c
    :删除文本并开始插入。删除的文本被放入未命名寄存器中
    "
  2. 输入前缀字符。
  3. 使用
    <C-r>"
    粘贴未命名寄存器中的内容。
  4. 输入后缀字符。

5
投票

定义自定义环绕声:

(在您的

.vimrc
或文件特定配置
~/.vim/after/ftplugin/markdown.vim
中插入以下内容)

" Custom surrounds
let b:surround_{char2nr('c')} = "```\r```"

现在视觉选择

Sc
将为您提供所需的环绕声。

或者使用片段解决方案;例如使用 Ultisnips 定义一个片段,如下所示:

snippet code
\`\`\`${1}
${0:${VISUAL}}
\`\`\`
endsnippet

现在可视化选择您想要的行,然后点击片段扩展键(我的是

Tab
),输入
code
并再次点击
Tab
。就是这样。


2
投票

这是另一个 ultisnips 解决方案。

snippet code "add backtics codes" w
`!v repeat(nr2char(96),3)` ${1:markdown}
${0:${VISUAL:type here}}
`!v repeat(nr2char(96),3)`
endsnippet

如果您不想在第一行之后出现“markdown”,请将其删除。我展示这个解决方案只是为了展示如何避免过多的反斜杠。

© www.soinside.com 2019 - 2024. All rights reserved.