加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在后台打开另一个文件Vim from Bash命令行?

发布时间:2020-12-13 19:34:27 所属栏目:Linux 来源:网络整理
导读:我正在从使用G vim转移到控制台Vim. 我在Vim中打开一个文件,然后挂起Vim,在命令行上运行几个命令,然后返回到Vim. Ctrl Z(在正常模式下)挂起Vim并返回到控制台 fg可以用来将焦点返回给Vim 作业列出后台作业,可用于获取作业号 把一个给定的工作带到前台(例如,f
我正在从使用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文件并清除它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读