我工作的公司使用源文件的特殊标题,其中包含上次修改的日期。
我编写了一个vim脚本,可以在每次缓冲区写入时自动更新此日期。
我正在使用搜索/替换功能来完成这个技巧。
现在问题是替换会将光标移动到文件的开头,这非常烦人,因为在每次缓冲区写入时,用户必须手动跳回到上一个编辑位置。
有没有人知道在更新日期时阻止vim跳跃的方法,或者至少让它跳回到之前的位置?
答案 0 :(得分:2)
互动地,您可以使用<C-O>
或更改标记``
移回原始位置,如vim replace all without cursor moving所示。
在Vimscript中,特别是当每个缓冲区写入运行时,我会包装代码:
let l:save_view = winsaveview()
%substitute///
call winrestview(l:save_view)
以前的移动命令可能仍会影响窗口视图(即视口中显示的确切行和列),而此解决方案可以恢复所有内容。
另请注意,{pattern}
中使用的:substitute
会添加到搜索记录中。为避免这种情况,请附加
call histdel('search', -1)
(当您在:function
中拥有此搜索模式时,搜索模式本身并未受到影响。)
或使用Vim 8中引入的:keeppatterns
命令:
keeppatterns %substitute///
我在AutoAdapt plugin中实现了类似的功能。你也会看到那里使用的所有技巧。
答案 1 :(得分:0)
我的import wrds
db = wrds.Connection()
libraries = db.list_libraries()
library = 'compg'
tables = db.list_tables(library=library)
table = 'g_company'
result = db.raw_sql('select * from COMPG.G_COMPANY')
上有一个类似的功能,我刚刚在其上添加了~/.vimrc
Co ,以便在函数执行更改后跳回我当前的位置。
normal