gpt4 book ai didi

Vim 片段,没有片段/模板插件

转载 作者:行者123 更新时间:2023-12-03 23:52:49 28 4
gpt4 key购买 nike

我经常使用 vim,但我的工作流程通常迫使我与其他 IDE 交互,所以我不是一个像上帝一样的 vim super 用户,我也不想很快成为。 Vim 不是我的 IDE,我也不希望它是。这是一款快速轻便的编辑器,不会妨碍我。

我正在寻找使用和配置的简单性,而不是 super 功率或效率方面的金星。

到目前为止,我一直在用我的片段预加载几个寄存器,然后为哪个寄存器有哪个文本 block 保留一份备忘单。但是我的寄存器用完了,一个字母数字 letter 并没有立即提醒我预加载的内容。

存储任意数量的原始文本 block ,然后使用单个关键字和 1 个热键(按任意顺序:关键字<>热键)检索它们的最简单方法是什么。

  • 我不需要语言感知片段(聪明的关键字将是我的解决方案)
  • 我不需要任何具有上下文感知或智能的片段
  • 我不打算使用 mini-template-language 来简化我的代码段,这太过分了。
  • 我的片段应该直接粘贴到它们定义的原始文本中,没有别的。

我想我可以开始编写命名函数,将文本 block 打印到当前缓冲区。这几乎是我所需要的,但我希望有一种更简单的方法来维护/更新我的片段集合。


是否有任何极简主义插件可以涵盖我的用例,还是我需要坚持使用 .vimrc/python-commands 方法?

小更新我没有意识到你可以将这么多字母与 map 领主联系起来,这可能会提供我需要的魔法。然后我仍然需要将别名返回到一些更大的函数集(可能使用 python 来定义命令)。

最佳答案

如果您想要无插件的解决方案,您可以使用:

  • 缩写

    :iabbrev obj    var foo = {};<Left><Left>
    :iabbrev func function foo() {<CR><CR>}<Up><Tab>
    :iabbrev lipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer diam augue, egestas quis, aliquam ut, venenatis ut, quam. Quisque ut augue. Integer non neque a lectus venenatis fermentum. Morbi quis eros nec elit molestie vehicula. Integer nunc lacus, sodales posuere, rutrum quis, blandit at, mi. Vivamus imperdiet wisi vel mauris. Morbi mattis ante non metus. Sed turpis dui, fermentum ut, aliquam eget, vulputate ullamcorper, pede. Nam non dolor. Etiam lobortis, urna id bibendum convallis, ligula augue auctor eros, a dictum sapien mi a tellus. Proin vel justo. Nunc malesuada turpis a sapien.

    您可以使用 <Space> 扩展它们如果您不介意尾随空格或 <C-]>如果你这样做了。

    :help abbreviations .

  • 插入模式映射

    您可以使用<leader> 创建任何您想要的复杂映射。与否。

    这里的键(不是双关语)只是选择一个很少使用的键并将其用作映射的命名空间。例如,在我的法语 AZERTY 键盘上,我有 §完全没用的键(未在 Vim 中使用,未在法语中使用,未在我使用的任何编程语言中使用)。如果我想构建一个映射库,我会将它用作这些片段的“领导者”:

    :inoremap §obj    var foo = {};<Left><Left>
    :inoremap §func function foo() {<CR><CR>}<Up><Tab>
    :inoremap §lipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer diam augue, egestas quis, aliquam ut, venenatis ut, quam. Quisque ut augue. Integer non neque a lectus venenatis fermentum. Morbi quis eros nec elit molestie vehicula. Integer nunc lacus, sodales posuere, rutrum quis, blandit at, mi. Vivamus imperdiet wisi vel mauris. Morbi mattis ante non metus. Sed turpis dui, fermentum ut, aliquam eget, vulputate ullamcorper, pede. Nam non dolor. Etiam lobortis, urna id bibendum convallis, ligula augue auctor eros, a dictum sapien mi a tellus. Proin vel justo. Nunc malesuada turpis a sapien.

无论您选择缩写还是映射,您都可以将它们全部保存在一个专用文件中:

~/.vim/snippets.vim

并在您的 ~/.vimrc 中获取它:

runtime snippets.vim

如果您决定将该文件放在 ~/.vim/ 之外的某个位置目录,您可以通过以下方式获取它:

source ~/path/to/snippets.vim

编辑

关于<leader>

<leader>真的没有那么特别:您通常可以将其视为一个变量,但是,就像插入 $foo在数据库中将插入 $foo 的值, 注册 <leader>something将注册{current value of mapleader}something .

假设您创建了一个自定义 <leader>映射:

let mapleader = ","
map <leader>b :bnext<CR>

Vim 寄存器 ,b .如果你决定改变你<leader>稍后在当前 session 中:

:let mapleader = "%"

你仍然有 ,b .只有进一步的映射将使用新的 <leader> :

map <leader>b :bnext<CR>

你得到两个 ,b%b .

<leader>仅在您创建映射时表示。使用中只是,b%b .

关于Vim 片段,没有片段/模板插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091740/

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