使用带有单独选项卡的vim打开* .h文件的命令

时间:2014-01-29 18:47:54

标签: linux bash vim terminal

如何编写一个命令,在Vim中打开由参数给出的多个文件,为每个Vim实例(和相应的文件)提供终端中自己的选项卡?

我尝试过这样做,但是xfce4-terminal在加载256种颜色方面遇到了问题(即使在TERM == xterm-256color时仍然会达到8):

vims ()
{
        for f; do xfce4-terminal --tab --hold --execute vim $f
        done
}

2 个答案:

答案 0 :(得分:0)

如何在单个终端窗口中使用tmux?它使这种自动化变得更加容易。

您可以使用以下方式开始新会话:

tmux new-session -s vims -n vim0 -d "ls $@"

然后根据需要生成多个标签:

for f in "$@"
do
    tmux new-window -t vims -d -n "$f" "vim $f"
done

此外,您还可以从tmux获得许多其他有趣的好处。您可以将vim保留在插入中间,然后将ssh保留在tmux attach中,以便在完全相同的位置进行拾取。

答案 1 :(得分:0)

我知道您是专门询问每个文件的终端选项卡,但是以下shell脚本将打开每个文件,并将其作为参数添加到单独的 Vim 选项卡中。有关详细信息,请参阅Vim中的:he tabedit

#!/bin/sh

################################################################################
#   vim_tabs.sh
#   Open a bunch of files in separate terminal Vim tabs
################################################################################
if [[ $# -eq 0 ]]; then
    echo "No files to open..."
    exit 1
fi

vim_cmd="vim $1"
shift

while [[ $# -gt 0 ]]; do
    vim_cmd="$vim_cmd -c \":tabnew $1\""
    shift
done

echo "$vim_cmd"
eval "$vim_cmd"

然后你可以通过./vim_tabs.sh "$(ls *.h)"执行此操作。