恢复已编辑的 vim 文件的更好方法

恢复已编辑的 vim 文件的更好方法

我的 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。

相关内容