VIM:在光标移动时在每一行上执行 Ruby 脚本并更新缓冲区以在拆分窗口中显示

标签 vim buffer text-cursor

我正在尝试用 VIM 解决一个问题。这是我要实现的目标:

我有一个包含几行的文件。当我将光标从一行移动到另一行时,我想将当前行作为参数发送给 Ruby 脚本。此脚本的结果应重定向到 VIM 缓冲区,该缓冲区将显示在原始文本上方的拆分窗口中。

到目前为止,我已经能够编写一个函数,向脚本发送一行,结果显示在上面的缓冲区中。我不确定每次光标移动到新行时如何让这个函数运行并使结果更新同一个缓冲区。任何指针将不胜感激。

我的代码:

function! BB()
    redir => a
    let str = getline(".")
    let str1 = "\"" . str . "\""
    silent execute "!${HOME}/scripts/test.rb " . str1
    redir END
    new
    put! = a
endfunction
command! -nargs=0 BB echo BB()

最佳答案

我首先想到的是映射按键 Action 。像这样的东西:

map j j:call BB()<CR>
map k k:call BB()<CR>

关于VIM:在光标移动时在每一行上执行 Ruby 脚本并更新缓冲区以在拆分窗口中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693153/

相关文章:

bash - 如何在 Vim 中获得代码折叠以使 shell 脚本正常工作

java - Vim,Java : Open class under cursor and go to method

c++ - C++ 中的 OpenGL 立方体

c++ - cin 对于一个 int 输入一个 char 会导致应该检查输入的循环变得疯狂

c++ - void* 或 char* 用于通用缓冲区表示?

android - 如何(以编程方式)更改 EditText 上气泡(光标下)的颜色?

VIM在命令行中设置光标位置

clojure - 在 vim 中突出显示函数体中的参数

vim - 将当前行保存在变量中

Git:取消交互式 rebase