vim 脚本:处理视觉选择以及光标下的单词

发布于 2024-11-26 16:49:14 字数 433 浏览 2 评论 0原文

我有一个 小型 vim 脚本,它查询 Google 在 markdown 格式的文本中插入链接。目前它只能使用光标下的单词,它使用 expand("") 检索该单词并通过执行正常模式命令 (norm ciw )。

我如何修改此脚本,以便它使用视觉选择(如果存在)进行工作?

我基本上需要三件事:

  • 知道文本是否被选择(否则使用光标下的单词)
  • 检索所选文本
  • 修改所选文本

理想情况下,我想要一种干净的方法来执行此操作。

有什么提示吗?

干杯

I have a small vim script that queries Google to insert links in markdown-formatted text. Currently it only works using the word under cursor, which it retrieves using expand("<cword>") and modifies by executing normal mode commands (norm ciw<new_text>).

How could I modify this script so that it works using the visual selection if it exists?

I need basically three things:

  • know whether text is being selected (otherwise use the word under cursor)
  • retrieve the selected text
  • modify the selected text

Ideally I would like a clean way to do this.

Any hints?

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘虞初梦 2024-12-03 16:49:14

您可以使用调用相同底层函数的单独视觉模式映射(vnoremap 而不是 nnoremap)来干净地处理这种情况。

要提取文本,标记“<”和“>” (对于上一个视觉选择的开始和结束)可能会有用。

要修改文本,您可以在脚本中使用 gv (重新选择之前的视觉选择),然后根据需要删除或替换它。

希望这对现在有帮助;稍后我可以花更多的时间在这上面。

You can handle this case cleanly using a separate visual-mode mapping (vnoremap rather than nnoremap) that calls the same underlying function.

To extract the text, the markers `< and `> (for the start and end of the previous visual selection) may be useful.

To modify the text, you may be able to use gv from your script (re-select the previous visual selection) and then delete or replace it as you wish.

Hope this helps for now; I'll be able to spend a bit more time on it later.

情独悲 2024-12-03 16:49:14

你的视觉选择提取功能太复杂了。通常的操作方法如下: lh#visual#selection()

顺便说一句,您可以使用以下命令构建正常模式映射:

vnoremap µ :call <sid>DoStuff()<cr>
nmap µ viwµ

Your visual selection extraction function is too complex. The usual way to proceed is the following: lh#visual#selection().

BTW, you can build the normal mode mapping with:

vnoremap µ :call <sid>DoStuff()<cr>
nmap µ viwµ
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文