gpt4 book ai didi

vim - 如何在 Vim 中使用带有参数的缩写?

转载 作者:行者123 更新时间:2023-12-04 21:43:15 26 4
gpt4 key购买 nike

在 Vim 中,您可以在每次在插入模式上编写“FF”时使用以下代码更改某些代码:

:iab FF for ( int i = 0 ; i < n ; i++ )

但是有没有办法将它与参数一起使用?类似于 C 的 #defines,所以如果我写
FF(e, 10)

它成为了:
for ( int e = 0 ; e < 10 ; e++ )

最佳答案

看看SnipMate (一个vim插件)。你不会得到参数,但在扩展缩写时,它允许你在可修改的区域中切换。在 for例如,您将被带到 i首先,可以将其编辑为 e ,它将更改为 e各领域for宣言。然后只需选择您想要更改的下一个区域。
从文档:

snipMate.vim aims to be an unobtrusive, concise vim script that implements some of TextMate's snippets features in Vim. A snippet is a piece of often-typed text that you can insert into your document using a trigger word followed by a .

For instance, in a C file using the default installation of snipMate.vim, if you type "for" in insert mode, it will expand a typical for loop in C:

for (i = 0; i < count; i++) {

}

To go to the next item in the loop, simply over to it; if there is repeated code, such as the "i" variable in this example, you can simply start typing once it's highlighted and all the matches specified in the snippet will be updated.


以下是重新映射 tab 的一个很好的有用更改和 s-tabc-dc-a ,以防您不想失去 tab 的功能(在 ~/.vim/after/plugin/snipMate.vim 中):
"""ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
"""snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
"""ino <silent> <s-tab> <c-r>=BackwardsSnippet()<cr>
"""snor <silent> <s-tab> <esc>i<right><c-r>=BackwardsSnippet()<cr>
"""ino <silent> <c-r><tab> <c-r>=ShowAvailableSnips()<cr>
ino <silent> <c-d> <c-r>=TriggerSnippet()<cr>
snor <silent> <c-d> <esc>i<right><c-r>=TriggerSnippet()<cr>
ino <silent> <c-a> <c-r>=BackwardsSnippet()<cr>
snor <silent> <c-a> <esc>i<right><c-r>=BackwardsSnippet()<cr>
ino <silent> <c-r><tab> <c-r>=ShowAvailableSnips()<cr>

关于vim - 如何在 Vim 中使用带有参数的缩写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112512/

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