我正在尝试在我使用的平台之一上修复 vim 的 Backspace 行为。我bad_platform从系统的get_platform命令中得到了这个平台的名称(称之为)。按照 中的建议:help fixdelete,并将其与如何执行系统命令的知识相结合,我将以下内容添加到我的 .vimrc 中:
let platform_name = system("get_platform")
if platform_name == "bad_platform"
set t_kb=^?
fixdel
endif
Run Code Online (Sandbox Code Playgroud)
这没有用。为了找出原因,我打开了一个 Vim 会话并执行了:echom platform_name. 这给出了结果bad_platform^@,^@我猜 NULL 字符在哪里,而不是从字面上键入“shift-6 shift-2”得到的两个字符。
不幸的是,这带来了一个问题。我无法将其更改为== "bad_platform^@",因为在获取 .vimrc 时,它似乎^@被解释为行尾字符。这意味着let platform_name = substitute(platform_name,"\^@","","")在 之前添加if也不起作用。
我该如何处理?提前致谢。
一些替代方案:
删除\nusing substitute(string, '\n$', '', '')
See:h NL-used-for-Nul技术背景
删除所有控制字符: substitute(string, '[[:cntrl:]]', '', 'g')
使用 match ( =~) 操作而不是 equal ( ==) 进行比较
从 system() 命令中去除输出的最后一个字节
:let a=system('foobar')[:-2]
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |