如何创建我的自定义 vim 片段?
How to create my custom vim snippets?
我想在编写 C++ 时创建一些片段。
例如:
创建一个文件,cpp.snippets。
priority -1
snippet exam
This is an example!
endsnippet
放在~/.vim/my-snippets/snippets/.
然后,在 ~/.vimrc 中添加以下语句:
set runtimepath+=~/.vim/my-snippets/
let g:UltiSnipsSnippetsDir='~/.vim/my-snippets/'
let g:UltiSnipsSnippetDirectories=["snippets"]
但是它不起作用,我该如何解决?
UltiSnips 插件包含详细的文档。您是否阅读了以下帮助页面?
:help UltiSnips-snippet-search-path
更新:
当我阅读帮助部分时,其中一件显而易见的事情是,在 UltiSnips 中,名称 "snippets" 不能在 g:UltiSnipsSnippetDirectories
中使用,因为它是为 snipMate 兼容的片段保留的。这不会发生在下面评论中共享的 link 中,而是使用名称 "my-snippets"。
我不使用 UltiSnips,但根据文档我建议采用以下方法:
- 不设置
g:UltiSnipsSnippetsDir
也不设置 g:UltiSnipsSnippetDirectories
。
- 保持
runtimepath+=
配置。
- 创建以下目录:
~/.vim/my-snippets/UltiSnips
.
- 将个人片段放在这个新目录下。
推理:
- 默认情况下,UltiSnips 搜索运行时路径下的所有
UltiSnips
目录,因此如果使用此名称则无需配置。
- 虽然个人代码段需要
runtime
设置,但如果使用插件管理器,此配置会自动维护。
- 最后一点允许安装包含片段的 vim 插件。例如,this 插件包含 snipMate 和 UltiSnips 的各种代码片段,包括 C++。
我对此感到非常悲伤。这是一个答案,供那些不想头痛的人将来参考。
我有一个共享 .vimrc
服务于 samba 共享。 Windows gViM 和 ViM 都使用这个文件。
Windows
.vimrc 的相关部分
我在 L:
下安装了一个 samba 共享。请注意,我实际上必须使用 POSIX 作为路径,而不是 Windows 反斜杠 \
,尽管它是 for Windows 的路径。
if has('win32') || has('win64') "If gVim under Windows"
let g:UltiSnipsSnippetDirectories=["L:/.vim/custom_snippets"]
endif
.vimrc for Unix 的相关部分
我的终端打开 xterm-256color
以获得更多颜色,但您可以将其与 xterm
交换。这里的路径可以正确扩展 ~
,因为这是我的 ``.vim` 所在的真实主目录。
if $TERM == "xterm-256color"
let g:UltiSnipsSnippetDirectories=["~/.vim/custom_snippets"]
endif
完成加载 custom_snippets
你不需要任何东西!以下更改不需要:
"let g:UltiSnipsSnippetDirectories=["custom_snippets"]
"let g:UltiSnipsSnippetsDir="~/.vim/snippets_custom/"
然而,Putty 似乎没有正确传递制表键或控制键,尽管所有路径都工作正常。 我在文件类型环境 set ft=tex
中用 :UltiSnipsEdit
测试了路径,它把我带到了 ~/.vim/snippets_custom/tex.snippets
应该的位置(都在 gvim Windows 和我的 unix 控制台)。
可能对在 Putty 中启用有用
- 补丁:Creating a ctrl+tab keybinding in PuTTY
- How to solve the collision of TAB key mapping of `UltiSnips` plugin in the Vim
- https://unix.stackexchange.com/questions/53581/sending-function-keys-f1-f12-over-ssh
如果您使用的是 sirver/ultisnips
插件 (UltiSnips),正确的方法是 运行 :UltiSnipsEdit
命令,它会为当前语言打开一个自定义片段文件/ 文件类型。
我想在编写 C++ 时创建一些片段。
例如:
创建一个文件,cpp.snippets。
priority -1
snippet exam
This is an example!
endsnippet
放在~/.vim/my-snippets/snippets/.
然后,在 ~/.vimrc 中添加以下语句:
set runtimepath+=~/.vim/my-snippets/
let g:UltiSnipsSnippetsDir='~/.vim/my-snippets/'
let g:UltiSnipsSnippetDirectories=["snippets"]
但是它不起作用,我该如何解决?
UltiSnips 插件包含详细的文档。您是否阅读了以下帮助页面?
:help UltiSnips-snippet-search-path
更新:
当我阅读帮助部分时,其中一件显而易见的事情是,在 UltiSnips 中,名称 "snippets" 不能在 g:UltiSnipsSnippetDirectories
中使用,因为它是为 snipMate 兼容的片段保留的。这不会发生在下面评论中共享的 link 中,而是使用名称 "my-snippets"。
我不使用 UltiSnips,但根据文档我建议采用以下方法:
- 不设置
g:UltiSnipsSnippetsDir
也不设置g:UltiSnipsSnippetDirectories
。 - 保持
runtimepath+=
配置。 - 创建以下目录:
~/.vim/my-snippets/UltiSnips
. - 将个人片段放在这个新目录下。
推理:
- 默认情况下,UltiSnips 搜索运行时路径下的所有
UltiSnips
目录,因此如果使用此名称则无需配置。 - 虽然个人代码段需要
runtime
设置,但如果使用插件管理器,此配置会自动维护。 - 最后一点允许安装包含片段的 vim 插件。例如,this 插件包含 snipMate 和 UltiSnips 的各种代码片段,包括 C++。
我对此感到非常悲伤。这是一个答案,供那些不想头痛的人将来参考。
我有一个共享 .vimrc
服务于 samba 共享。 Windows gViM 和 ViM 都使用这个文件。
Windows
.vimrc 的相关部分我在 L:
下安装了一个 samba 共享。请注意,我实际上必须使用 POSIX 作为路径,而不是 Windows 反斜杠 \
,尽管它是 for Windows 的路径。
if has('win32') || has('win64') "If gVim under Windows"
let g:UltiSnipsSnippetDirectories=["L:/.vim/custom_snippets"]
endif
.vimrc for Unix 的相关部分
我的终端打开 xterm-256color
以获得更多颜色,但您可以将其与 xterm
交换。这里的路径可以正确扩展 ~
,因为这是我的 ``.vim` 所在的真实主目录。
if $TERM == "xterm-256color"
let g:UltiSnipsSnippetDirectories=["~/.vim/custom_snippets"]
endif
完成加载 custom_snippets
你不需要任何东西!以下更改不需要:
"let g:UltiSnipsSnippetDirectories=["custom_snippets"]
"let g:UltiSnipsSnippetsDir="~/.vim/snippets_custom/"
然而,Putty 似乎没有正确传递制表键或控制键,尽管所有路径都工作正常。 我在文件类型环境 set ft=tex
中用 :UltiSnipsEdit
测试了路径,它把我带到了 ~/.vim/snippets_custom/tex.snippets
应该的位置(都在 gvim Windows 和我的 unix 控制台)。
可能对在 Putty 中启用有用
- 补丁:Creating a ctrl+tab keybinding in PuTTY
- How to solve the collision of TAB key mapping of `UltiSnips` plugin in the Vim
- https://unix.stackexchange.com/questions/53581/sending-function-keys-f1-f12-over-ssh
如果您使用的是 sirver/ultisnips
插件 (UltiSnips),正确的方法是 运行 :UltiSnipsEdit
命令,它会为当前语言打开一个自定义片段文件/ 文件类型。