问题描述
我在 zsh shell 中使用 this 片段插件并想对其进行自定义。 展开片段后如何将光标的位置自定义到特定位置(就像编辑器通常对完成所做的那样)。
我写了 l
并按 Ctrl-d 将其展开使其变为 $(line )
但光标移动到整个代码段之后,我希望它在代码段内以便我可以在之后写一个数字line
和字符 )
这是负责片段扩展的函数(我仍然没有从源代码中编辑任何内容,它仍然与存储库相同):
snippet-expand () {
emulate -L zsh
setopt extendedglob
local MATCH
LBUFFER=${LBUFFER%%(#m)[.\-+:|_a-zA-Z0-9]#}
LBUFFER+=${snippets[$MATCH]:-$MATCH}
}
解决方法
您附加到 $LBUFFER
的所有内容都会立即出现在光标的左侧。相反,您添加到 $RBUFFER
的所有内容都将立即出现在光标的右侧。所以,把你的片段分成两部分然后做
LBUFFER="$LBUFFER<left half of your snippet>"
RBUFFER="<right half of your snippet>$RBUFFER"