Vim:我需要手动解析一种语言,如果我'我试图在导航
Vim: do I need to parse a language manually if I'm trying to navigate within in?
我想写一些函数,让我在JavaScript源文件中更容易移动。我意识到的第一件事是,我需要知道光标所在的作用域。查看Vim的内置函数,我没有看到任何东西可以自动为我做这些。
我的问题是,我是否需要攻击这个问题,如果Vim没有作用域或块结构的概念?也就是说,找到第一个'{'和它的匹配对,定义之间的一切作为scopeLevel0,找到下一个'{'和它的匹配对,并称之为scopeLevel1…等。这对我来说似乎很天真,我想知道Vim是否可以允许我自动访问和导航块。
你应该说明你想要实现的导航类型。
Vim有作用域的概念,它在您的语言的语法文件中定义。有许多函数显示游标在这里或其他地方的作用域。我在我的。vimrc中的是:
function! SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
nnoremap <C-p> :call SynStack()<CR>
在文档中导航,特别是代码,已经是Vim的一个强大的功能,有文本对象运动,如(
和)
或[(
, [{
, ])
和]}
或[m
和]m
…参见:help navigation
。再加上*
、#
、/
和?
或标签等其他动作,你的手指已经有了很大的力量。
你想要更多的粒度吗?
对于更具体的需求,您可能希望定义自己的文本对象。有一个名为textobj-user的脚本专门用于协助完成该任务。使用或不使用此工具创建了许多特殊的文本对象,并在vim.org上提供。
我不能保证这会解决你的问题。但是对于在vim中导航源代码,人们通常使用标签。特别是,您可能能够使用Exuberant标签。
如果你需要帮助开始使用标签:
- https://superuser.com/questions/305328/gvim-what-is-ctags-and-how-do-i-use-it
- 在Windows (Vista和XP)上安装Exuberant标签
也可以参考这篇关于如何让它与Javascript很好地配合的文章:
- http://weblogs.asp.net/george_v_reilly/archive/2009/03/24/exuberant-ctags-and-javascript.aspx
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果href包含X,请更改href
- 如果localstorage为空,则显示欢迎消息
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- 如果元素's的ID以数字开头
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery模板,如果xx&&如果yy
- 如果网址以“lang=fr”结尾,如何更改网站语言
- 如果我想使用Telerik的剑道UI,我需要知道什么语言
- 如果url不存在,请添加语言后缀(javascript)
- Vim:我需要手动解析一种语言,如果我'我试图在导航
- 如果一种语言没有“位对位”;比较,我如何模拟它
- 如果语言更改,请更改缓存
- 如果 else 语句,javascript 切换,液体/Ruby 语言