gpt4 book ai didi

vim - 在 vim 中创建替换宏的最佳方法

转载 作者:行者123 更新时间:2023-12-04 20:10:53 25 4
gpt4 key购买 nike

我想在 vim 中设置一些自定义的自动完成宏。我在想这样的事情(| 代表光标位置):

it<TAB>|

立即变成:

it("|", function () {
});

这是否可以直接使用 vim,或者我需要一个插件吗?如果是这样,是否有首选插件?

最佳答案

使用缩写你可以这样写:

inorea it it("", function () {<cr>});<c-o>k<c-o>f"

<c-o>k<c-o>f"的目的|最后是将光标重新定位在双引号内,但它可能不会一直有效。


使用映射,你可以试试这个:

ino <expr> <tab> <sid>expand_last_word()

let s:your_expansions = {
\ 'it': '\<c-w>it(\"\", function () {\<cr>});\<c-o>k\<right>',
\ }

fu! s:expand_last_word() abort
let last_word = matchstr(getline('.'), '\v<\k+%'.col('.').'c')
return has_key(s:your_expansions, last_word)
\ ? eval('"'.s:your_expansions[last_word].'"')
\ : "\<tab>"
endfu

您必须在字典 s:your_expansions 中添加缩写词及其扩展名.


使用 :read命令,您可以定义更大的代码片段,并将它们拆分到多个文件中:

ino <expr> <tab> <sid>expand_last_word()

fu! s:expand_last_word() abort
let last_word = matchstr(getline('.'), '\v<\k+%'.col('.').'c')
if last_word ==# 'it'
return "\<c-w>\<c-o>:r /path/to/some_file\<cr>\<c-o>f\"\<right>"
endif
return "\<tab>"
endfu

在这里/path/to/some_file应包含您的代码段:

it("", function () {
});

它们是非常简单的解决方案,如果您想要更强大的东西,您可能需要一个片段插件。其中之一是 UltiSnips , 这需要你的 Vim 版本编译时支持 Python ( :echo has('python'):echo has('python3') 返回 1)。

使用 UltiSnips,您可以像这样编写代码段:

snippet it "your description" b
it("$0", function () {
});
endsnippet

此处定义包含在关键字 snippet 之间和 endsnippet .在第一行,您可以在双引号内的字符串中描述您的片段的目的。如果您使用相同的选项卡触发器定义了多个片段,并且存在歧义,它将由 UltiSnips 在列表中显示。

结尾b是防止选项卡触发的选项 it不会在一行开头以外的任何地方展开。

$0是一个制表位,它代表当代码段完全展开后您希望光标所在的位置。

github 上的自述文件页面提供了快速入门和一些视频链接。

如果你想看看别人写的片段,你可以安装vim-snippets .

还有其他代码片段管理器,但我对它们的了解还不够深,无法描述其代码片段的语法。如果你想要比较,这里是one ,以下是其中一些的链接:

关于vim - 在 vim 中创建替换宏的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com