我正在从使用G
vim转移到控制台Vim.
我在Vim中打开一个文件,然后挂起Vim,在命令行上运行几个命令,然后返回到Vim.
> Ctrl Z(在正常模式下)挂起Vim并返回到控制台
> fg可以用来将焦点返回给Vim
>作业列出后台作业,可用于获取作业号
把一个给定的工作带到前台(例如,fg%2把工作2带到
前景).
但是,当Vim处于后台并发布vim文件时,文件将在Vim的新实例中打开.
我习惯于在Gvim中使用–remote选项来打开现有Gvim实例中的文件.
题:
>如何在后台打开另一个文件Vim从命令行?
>这是在控制台和Vim之间移动的合理工作流程?
更新:
我刚读了this answer by @jamessan,它提供了一些想法.他显示以下代码片段:
vim --servername foo somefile.txt :shell <do stuff in your shell> vim --servername foo --remote otherfile.txt fg
但是,我必须考虑如何使用或许与一些别名更容易使用.
这会是一个好办法吗?
>如何才能有效地使用?
解决方法
这也是我需要的.我发现这个线程,虽然没有令人满意的方法,但很高兴看到像我一样的要求.
我的做法是
添加到.bashrc
v() { vim_id=`jobs|sed -n "/vim/s/\[\([0-9]\)\]+.*/\1/p"` if [ -n "$vim_id" ]; then echo "tabedit $@" > ~/.vim_swap/e.vim && fg $vim_id else vim $@ fi }
添加到.vimrc
nnoremap <silent> <space>e :source $HOME/.vim_swap/e.vim<Bar>:call writefile([],$HOME."/.vim_swap/e.vim")<CR>
然后v foo.c打开第一个文件,编辑…,ctrl-z挂起vim,做shell东西,v bar.h带vim前台.
在VIM中,按< Space> e键入tab.h.
所以想法是从shell命令生成vim命令,将它们保存到temp.vim文件中.在VIM中,映射键来源.vim文件并清除它.