2012-04-02 82 views
1

我使用的是Mac OS X Lion的终端上,Vim 7.3,并具有以下映射:终端VIM执行打开命令和回不回

map <silent> <leader>p :<C-u>silent !open -a Marked.app '%:p'<CR><C-l>

,并曾尝试:

command! Marked silent !open -a "Marked.app" "%:p"Opening current file in Marked with a Vim command

这个工作在的MacVim在Marked.app打开当前文件,但在终端的Vim打开文件,并没有返回Vim的可用状态给出。我必须C-z然后fg才能恢复。

+4

CLI Vim无法分叉进程,我想。你在命令的最后用'&'试过了吗? – romainl 2012-04-02 16:22:49

+0

我试过了,但没有帮助。 – 2012-04-06 15:00:38

+0

不,它不会完全符合你的要求,因为CLI Vim不能分叉进程。但添加'&'就不需要''/'fg',因为您只需要额外的''就可以回到Vim。由于这是Vim的限制,有些人编写了插件来提供这个功能:[一](https://github.com/MarcWeber/vim-addon-background-cmd),[另一个](http://www.vim .ORG /脚本/ script.php的?SCRIPT_ID = 3431)。 – romainl 2012-04-06 15:16:25

回答

1

终端Vim处于“无法使用的状态”看起来实际上是Vim没有重画屏幕。这解决了这个问题:

command! Marked silent !open -a "Marked.app" "%:p" 
nmap <silent> <leader>p :Marked<CR>\|:redraw!<CR> 

在旁边注意:MacVim没有这个问题。我相信MacVim有许多其他的细节我会错过。但在终端上运行Vim已经是一个巨大的生产力提升。