You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中正确保存并读取含非打印字符的寄存器内容?

解决Vim寄存器中非打印字符的正确保存问题

当然可以正确保存这些非打印字符,问题出在Vim默认会将控制字符转义为可读的表示(比如<CR>、<Down>)来存储,而非原始字节。以下是两种可靠的解决方法:

方法一:二进制模式保存/读取

  1. 打开新文件并启用二进制模式:
    :set binary
    
    二进制模式下Vim会直接按原始字节处理内容,不转换换行符或控制字符的显示格式。
  2. 将寄存器q的内容粘贴到文件:
    :put q
    
  3. 保存文件:
    :w! my_commands.vim
    
  4. 后续读取时,同样以二进制模式打开文件,再将内容复制回寄存器或直接执行:
    :e ++bin my_commands.vim
    " 复制回寄存器q
    :%y q
    " 或者直接执行命令
    :source my_commands.vim
    

方法二:用Vim脚本直接读写原始字节

  • 直接将寄存器q的内容以二进制模式写入文件:
    :call writefile([@q], 'my_commands.vim', 'b')
    
  • 读取文件内容回寄存器q:
    :let @q = readfile('my_commands.vim', 'b')[0]
    

关键说明

你之前调整的encoding、fileencoding等设置针对的是字符编码(如UTF-8、GBK),但此问题的核心是Vim对控制字符的转义处理,和编码无关。上述两种方法都绕开了Vim的转义逻辑,直接操作原始字节,因此能完整保留寄存器中的非打印命令字符。

内容的提问来源于stack exchange,提问作者zhzhy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:27:05