作为Python自动完成的第二项任务(https://github.com/davidhalter/jedi),我正在编写一个能够进行重命名(重构)的VIM插件。
最简单的重命名方法是使用cw
和autocommand InsertLeave :call do_renaming_func()
。要做到这一点,我需要访问redo-register
(参见help redo-register
)或类似的东西,这将记录书面文字。
如果可能的话,我喜欢在没有宏的情况下这样做,因为我不想搞砸任何东西。
答案 0 :(得分:2)
.
注册表(@.
)包含所有编辑键,不幸的是原始格式,<Del>
和<BS>
也显示为<80>kD
,以及哪些插入完成不解释。相反,要仅提取输入的净文本,请使用由标记'[
和']
(最后一个独占)分隔的范围。
有关如何执行此操作的示例,请查看我的PrevInsertComplete plugin。
答案 1 :(得分:1)
.
寄存器包含最后插入的文本。请参阅:help quote_.
。
帮助并没有特别提到填写此寄存器的任何警告,但它确实提到它在编辑命令行时不起作用。这对你来说不是一个问题。
答案 2 :(得分:0)
问题是不知道它是哪个寄存器,而是访问它。 我最终找到了这个方法:
getreg('.')
正如@Ingo Karkat指出的那样,这个寄存器可能包含一些逃避字符。
但是,我最后使用了不同的方法。我刚读了expand('<cword>')
来获取新单词(因为重命名总是只有一个单词)。这更容易,更可靠。
这是代码(第113行): https://github.com/davidhalter/jedi/commit/6920f15caf332cd14a7833a071765dfa77d82328