我如何编写一个命令,该命令将在vim中通过参数给出的多个文件,在终端中给出每个vim实例(和相应的文件)?
我尝试这样做,但是XFCE4-terminal在加载256种颜色时遇到问题(即使在TERM == xterm-256color
时,它也会继续达到8个):
vims ()
{
for f; do xfce4-terminal --tab --hold --execute vim $f
done
}
在单个终端窗口中使用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留在中插入中,然后在tmux attach
中插入SSH。
我知道您是每个文件的终端选项卡,但是以下shell脚本将在单独的 vim tab中打开每个文件作为参数。有关更多详细信息,请参见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)"
。