使用expand("<cWORD>")
获取当前单词并处理结果字符串后,我正在尝试用它替换当前单词。
我该怎么做?
编辑 已添加来源。我是用python写的。
cur_word = vim.eval('expand("<cWORD>")')
parts = cur_word.split('.')
if parts:
obj, accesses = parts[0], parts[1:]
result = obj + ''.join("['%s']"%a for a in accesses)
# how do I replace the current word with result?
答案 0 :(得分:4)
修改强>
看起来你想要这个:
viW
:s/\%V\.\(\w\+\)\%V/\="['" . submatch(1) . "']"/g
例如,对于以下文本,curosr在第二行:
x = a.get.property;
x = a.git.another.property; # cursor on the first letter 'e'
结果将是
x = a.get.property;
x = a['git']['another']['property'];
你可能想要你
那将是
ý 我 w ^ (移动光标) v 我 w ^ P
所以例如:
the lazy cow mooned over the racy hump
cursor here: ----> +
现在,做 y i W (猛拉内部WORD), F a (回到:)
the lazy cow mooned over the racy hump
--> +
现在, v i W p 取代当前的WORD:
the over cow mooned over the racy hump
--> +
答案 1 :(得分:1)
在Vim的python界面中,您可以执行普通模式命令,在您的情况下,
vim.command("normal BcW%s" % result)
会做到这一点。