我已经注解掉了我所有的vimrc文件,在我的macOS(22.6.0 Darwin Kernel Version 22.6.0: Wed Jul 5 22:22:05 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6000 arm64 arm Darwin
)中,它找不到带有以下命令和源代码的标记
$ cat x.lua
function test ()
end
$ ctags -R x.lua
$ cat tags
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /[email protected]/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.8 //
test x.lua /^function test ()$/;" f
$ vim -t test
# vim reports the error like "E257: cstag: Tag not found"
字符串
如果我删除函数名test
后面的空格,比如function test()
,那么它就可以工作。
我也在我的EC2 ubuntu中测试了这个,它甚至可以在函数名test
后面有一个空格。
我不知道如何调试后,这一点,我也问它ChatGPT 3.5,但它不能解决这个问题。
1条答案
按热度按时间m1m5dgzv1#
在解析文件时,
ctags
创建了一个test
标记,* 请注意结尾的空格 *,而不是test
标记。这可能是因为Lua的默认解析器不希望在函数名和左括号之间有可选的空格。由于实际的标记是
test
,因此使用-t test
或:tag test
搜索test
将不起作用,因为该搜索是 literal。:tag test
中搜索test
,并使用空格,test
::tag /test
在Vim中,或:
test
:$ vim -t /test
。请参见
:help tag-regexp
。如果您不能从代码中删除多余的空间(这是真实的的解决方案),您可以告诉ctags使用一些regexp搜索新标记(参见
$ man ctags
),或者尝试Universal Ctags(如注解中所述),在此特定场景中,它可能比Exuberant Ctags更智能,也可能不智能。