VIm:将光标位置atom复制到本地变量

时间:2015-05-06 10:08:59

标签: regex vim

我正在寻找一种在vim脚本中将匹配结果复制到局部变量的方法。

问题是我希望匹配包含游标位置原子$res = $this->AgentChat->find( 'first', array( 'contain' => array( 'AgentChatMember' => array( 'conditions' => array( 'AgentChatMember.user_id' => $userIds ) ) ), 'conditions' => array( 'AgentChat.agent_chat_member_count' => count($userIds), 'AgentChat.chat_team_id' => $chatTeamId ) ) ); 的文本,例如:\%#,它匹配游标下的[A-Za-z:]*\%#[A-Za-z:]\+文本等标识符(所以{ {1}}对我不起作用。)

我想稍后在脚本中使用它,但我越挖越多,我开始怀疑这是否可能(或者:如果我应该采用不同的方式,通过收集当前行,光标位置然后手动提取光标下的标识符。

如果在vim脚本中无法实现这一点 - ::namespace::ParentClass::SubClass原子背后的想法是什么?有什么用?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 将模式分成光标前后的部分,获取当前行,分隔成光标前/后,并将每个模式与分离的模式匹配;这会使用getline()strpart()matchstr(),就像您在问题中所暗示的那样。
  • 从当前位置使用search()两次,一次在光标后找到匹配的结束,一次在光标前/上找到匹配的开始,然后使用getline()和{ {1}}提取匹配的文字:
strpart()