如何编写一个命令,在Vim中打开由参数给出的多个文件,为每个Vim实例(和相应的文件)提供终端中自己的选项卡?
我尝试过这样做,但是xfce4-terminal在加载256种颜色方面遇到了问题(即使在TERM == xterm-256color
时仍然会达到8):
vims ()
{
for f; do xfce4-terminal --tab --hold --execute vim $f
done
}
答案 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)"
执行此操作。