我的 Linux 机器经常因大量打开的vim
会话而堵塞。要继续我的工作,我必须打开所有文件并决定是继续使用保存的文件还是交换文件。我用
for file in $(find ~/git -name *.swp); do
gvim "$(echo $file | sed 's/.swp$//;s_/\._/_')"
done
它可以满足我的需求(是的,我更喜欢具有gvim
多个缓冲区的一个实例的单独实例,是的,理论上这对于我在现实生活中没有的某些路径名可能会失败),但这是一种令人讨厌的脚本编写方式。
我宁愿做类似的事情
find ~/git -name *.swp -exec gvim -r {} \;
但这并没有让我决定是继续使用保存的版本还是恢复版本。
你能想出其他更直接的方法来实现我的目标吗?
答案1
您有一个gvim
不带任何选项的命令来操作文件名,而另一个命令gvim -r
则用于传递交换文件。
如果您喜欢for
循环的功能,请尝试这个(这是仅限 bash 的版本):
find ~/git -name *.swp -exec bash -c 'f=${1%.swp}; f=${f/\/./\/}; gvim "%f"' x {} \;
将“x”传递给 bash 将 $0 设置为“x”,因此查找{}
占位符变为 $1。