gpt4 book ai didi

linux - 如何从 Bash 命令行在后台 Vim 中打开另一个文件?

转载 作者:IT王子 更新时间:2023-10-28 23:54:36 25 4
gpt4 key购买 nike

我正在从使用 Gvim 过渡到控制台 Vim。

我在 Vim 中打开一个文件,然后暂停 Vim,在命令行上运行一些命令,然后想返回到 Vim。

  • Ctrl+Z(在正常模式下)暂停 Vim 并返回控制台
  • fg 可用于将焦点返回给 Vim
  • jobs 列出后台作业,可用于获取作业编号 将给定的作业置于前台(例如,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 tabedit bar.h。

所以想法是从 shell 命令生成 vim 命令,将它们保存到临时 .vim 文件中。在 VIM 中,将键映射到 .vim 文件的源并清除它。

关于linux - 如何从 Bash 命令行在后台 Vim 中打开另一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com