从vi/Vim调用键序列上的共享对象

dcw*_*dcw 3 vim

我有一个共享库(二进制形式;我有源代码),用于在Visual Studio中的源文件中的符号之间进行反转/循环.

我希望能够在vi和/或Vim中使用相同的功能.

具体来说,我想做的是以下场景:

  • 光标在一个单词上
  • 我按一个键序列,例如CTRL-I
  • vi/Vim解决了我所说的全部内容
  • vi/Vim调用我的共享库,传递该字,并接收反转/循环替换
  • vi/Wim用新单词替换原始单词

我没有任何线索,如果/如何让vi/Vim这样做,我没有运气搜索.

任何建议都感激不尽......

Myk*_*yev 6

尝试

inoremap <C-i> <esc>"hciw<C-R>=libcall('path/to/your.dll', 'func', @h)<CR>
Run Code Online (Sandbox Code Playgroud)

它能做什么:

  • 为插入模式<Ctrl + i>创建地图
  • <esc>切换到正常模式"hciw将光标移动到寄存器h中
  • <Cr> =插入下一个表达式的光标位置结果
  • libcall(...)调用运行时库中的函数.
  • @h是'h'寄存器的值.

如果您想使用可以从命令行运行的简单二进制文件,您可以使用

inoremap <C-i> <esc>"hciw<C-R>=substitute(system('mybin --word='.@h), "\n", '', 'g')<CR>
Run Code Online (Sandbox Code Playgroud)