if(aa || bb && cc)中的 boolean 表达式,假如要删除 aa 或 bb 或 cc 你们怎么操作

2022-10-05 03:46:01 +08:00
 zhanggang807
有 argtextobj 插件可以方便操作方法参数
但是这种表达式怎么删除?
要用 vim-textobj-user 插件自己定义 textobject 吗?
1881 次点击
所在节点    Vim
9 条回复
optional
2022-10-05 09:57:23 +08:00
这样的代码 CR 能过? 一眼看不出逻辑的 PR 直接 Reject
zhanggang807
2022-10-05 15:51:54 +08:00
@optional 你是机器人吗?
zhanggang807
2022-10-05 15:57:03 +08:00
目的很简单,除了用 v 选中之后再操作之外
删除整个表达式比较简单,dib 或者 di(
有没有更方便的方法删除其中某一部分?
删除 aa
删除 aa ||
删除 bb
删除 || bb
删除 bb &&
删除 cc
删除 && cc
jdhao
2022-10-05 16:24:06 +08:00
aa bb cc 具体是什么样的,如果没有括号之类,没有现成的 text object 可用
zhanggang807
2022-10-05 16:32:53 +08:00
@jdhao aa,bb,cc 具体可以是 boolean 变量 /常量,boolean 表达式,返回 boolean 的方法等
zhanggang807
2022-10-05 16:34:32 +08:00
@jdhao 就是想要一个 if(以|| &&分割的 text object)
没有现成的 那只能自己定义了吧??
zhanggang807
2022-10-05 16:37:34 +08:00
jdhao
2022-10-05 16:43:00 +08:00
@zhanggang807 yes, 自己定义吧,没有现成的,因为你这个结构不太规则。
daveh
2022-10-06 10:13:16 +08:00
JetBrains 全系可以用 Extend Selection 这个功能来实现,将光标放到 || 或者 && 上,连续按 Extend Selection 快捷键,来选择条件的代码片段,再删除就行。
而且 JB 系的这个 Extend Selection 是理解语义的,就是说能识别 && 与 || 优先级不一样,例如 if(aa || bb && cc && dd) ,光标放第 1 个 && 上,先选择中 bb && cc ,再扩展到 bb && cc && dd ,而不是扩展为 aa || bb && cc 。

vim 也可以参考一下,看有没有类似理解语义的 Extend Selection 功能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX