Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim autocmd在变更线上?_Vim - Fatal编程技术网

vim autocmd在变更线上?

vim autocmd在变更线上?,vim,Vim,每当一行被修改时,我都会尝试运行一个函数,但似乎没有一个特定的自动命令。我可以在CursorMoved上运行该函数,但它会减慢编辑速度。我还可以映射所有主要编辑动作的功能,但它可能会变得非常混乱,因为我试图使每一行独立于其他行。如果没有解决方案,我可以每隔几秒钟做一次diff,看看发生了什么变化,并在变化的行上运行函数,但这也是一个混乱的解决方案 有什么想法吗?你可以通过BufWritePre活动做类似的事情。有一个定义行和标记的主文件,然后在从属文件中引用它们的主文件,如: Foo.vim大师

每当一行被修改时,我都会尝试运行一个函数,但似乎没有一个特定的自动命令。我可以在CursorMoved上运行该函数,但它会减慢编辑速度。我还可以映射所有主要编辑动作的功能,但它可能会变得非常混乱,因为我试图使每一行独立于其他行。如果没有解决方案,我可以每隔几秒钟做一次diff,看看发生了什么变化,并在变化的行上运行函数,但这也是一个混乱的解决方案


有什么想法吗?

你可以通过BufWritePre活动做类似的事情。有一个定义行和标记的主文件,然后在从属文件中引用它们的主文件,如:

Foo.vim大师:

let b:Dom_slaves = ['/foo/bar/slave.cpp', '...', ...]
let b:Dom_map = { 
              \   10 : "do your laundry",
              \   20 : "prepare your lunch" 
              \ }
从.cpp

/* Dom_master = master-Foo.vim */
...
cout << "I will gladly /* Dom-id:10 */ and /* Dom-id:20 */.\n";

顺便说一句,这对你的精神来说是一件可怕的事情P

如果您可以获得Vim 7.4,请查看。(请注意,这将监视整个缓冲区中的更改。)

您是否查看了
InsertLeave
事件?它应该比
CursorMoved
低性能密集度。您到底想要实现什么?使用特定用例提问(并且更容易回答)比只询问技术细节而不询问背景信息要好。是的,我已经通读了:h autocmd events。InsertLeave只在这一点上起作用,而不是在正常模式下进行任何更改、替换等。为了解释我正在尝试做什么——基本上,我试图通过一个系统来组织我的笔记,其中每行末尾都有一个参考号,这样我就可以在不同的地方多次使用同一行,在不同的标题/折叠下,每次我编辑行/折叠时,它都会“同步”其他行/折叠。这是一种廉价的数据库,没有复杂度,编辑纯文本的速度快。你自己说的!您希望在(功能强大的)文本编辑器中实现数据库。坏主意。说真的,我会重新考虑我的方法。您可以使用
&modified
,但似乎没有合适的自动命令事件@无论如何,英戈卡卡特可能是对的。
let MSMap = {}
autocmd BufWritePre * call s:Dominate()

function! s:Dominate()
    " if current buffer's Dom_slaves and Dom_map defined
        " read & update all slaves with Dom_map mappings
    " else see if 'Dom_master = somefile' appears in the buffer
        " update mapped values from cache or read master file, cache and update
    " endif
endfunction