![在 `script` 命令给出一个文件后,我在 vim 中使用 `:set isprint=1-225` 删除不可打印的字符,但无法以这种格式保存文件](https://linux22.com/image/1541895/%E5%9C%A8%20%60script%60%20%E5%91%BD%E4%BB%A4%E7%BB%99%E5%87%BA%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%8E%EF%BC%8C%E6%88%91%E5%9C%A8%20vim%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20%60%3Aset%20isprint%3D1-225%60%20%E5%88%A0%E9%99%A4%E4%B8%8D%E5%8F%AF%E6%89%93%E5%8D%B0%E7%9A%84%E5%AD%97%E7%AC%A6%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E4%BB%A5%E8%BF%99%E7%A7%8D%E6%A0%BC%E5%BC%8F%E4%BF%9D%E5%AD%98%E6%96%87%E4%BB%B6.png)
当我在 vim 中执行此命令时,:set isprint=1-225
所有不可打印的字符都会被压缩/删除。现在我该如何保存此文件或转换此文件的格式,以便默认情况下此文件以此格式打开。或者,如果我将其上传到 github,不可打印的字符会被压缩吗?
我的问题在 Stack Overflow 上被否决,因为与编程或开发无关,所以我想我应该在这里添加一些细节。我无法在标题中写完所有内容,但基本上我可以用这行总结我的补充:我正在使用命令script
来记录我的会话,而script
命令给出了一个包含大量“不可打印”字符的文件,我可以使用 vim 压缩不可打印字符,:set isprint=1-225
我该如何以这种格式保存文件?
我知道并且尝试过的其他选项是编写一个 perl 函数来删除控制字符(最佳替代,尽管我必须检查是否已删除所有不可打印字符),以及来自 bash 提示符的dos2unix
&col -bp
命令组合。
这看起来很有希望,但在我尝试之前,我看到在 Ubuntu 的下载下它显示已过期 - 我还应该尝试使用该.tar.bz2
文件进行安装吗?
附言在这篇文章中 Kyle Barbour 的回答让我思考是否有办法使用tr
实用程序来执行set: isprint=1-225
vim 命令行所做的事情。
答案1
设置该'isprint'
选项不会修改文件,它只会影响 Vim 如何显示文件。不过,你可以在设置该选项后运行替代命令:
:%s/[^[:print:]]//g
然后写入文件。
答案2
[已解决] 由于我正在使用 tmux,因此为了我的目的,我已决定使用 tmux 命令capture-pane -S <# off lines>
。
因此,当我使用命令将会话中的 I/O 捕获script
到 xyz.txt 文件中后,我可以从终端提示符发出cat xyz.txt
命令以查看不包含不可打印字符的文件。在 tmux 中使用复制模式检查 xyz.txt 文件中有多少行。最后从 tmux 命令缓冲区发出命令capther-pane -S <# of lines>
,然后使用 将其保存到文件 zyx.txt 中:save-buffer zyx.txt
。
谢谢大家。