如何用C语言调用vim脚本

时间:2013-04-15 09:45:14

标签: vim

我的目标是什么:

我希望程序为vim编辑的每个文件获取session.vim和viminfo.info文件, 并将这些文件scp到另一台电脑,然后我可以在另一台电脑上继续工作。

问题:

  • 可能文件未保存。
    • 应该在程序生成session.vim之前保存文件。
  • 如何获取文件的绝对路径。
    • 我只能使用ps -ef |获取文件名grep vim。
    • getcwd()可以获得当前正在工作的derectory。但是,我无法将其推送到由C编写的程序中。

这是我的解决方案,但它不起作用,也许你会得到更好的解决方案,我需要你的帮助。

终止所有vim进程,并为每个文件获取session.vim和viminfo.info。 在我的C代码中:

system(kill -9 pid);//pid is the pid of vim process.

在我的.vimrc文件中:

autocmd VimEnter * let s:this_session='.'.expand('%:t').'.vim'
autocmd VimLeave * if v:dying | call Somefunc() | endif
function! Somefunc()
    silent! wa
    execute 'mksession! '.fnameescape(s:this_session)
endfunction

它不起作用。

我能说清楚吗?我不擅长英语。

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

man kill说:

  

SIGKILL 9杀死(无法捕获或忽略)

使用-9参数,Vim(以及任何其他进程)没有机会对信号作出反应;该过程将被强行终止。尝试通过省略SIGTERM (15)参数来发送默认-9。有关详细信息,请参阅here