vim - @a=" 之间的区别0" 和@a=@0
问题描述
我已将以下文本复制到"0
寄存器中
test
test
如果我想将寄存器的内容复制
"0
到"a
我做的寄存器:let @a=@0
然后,如果我粘贴
"a
我获得的寄存器内容test test
"0
现在,将寄存器的内容粘贴到"a
我做的寄存器中:let @a="
然后
<C-r>0
,结果是这样的:let @a="test^Mtest^M"
然后我粘贴
"a
寄存器("ap
)的内容,我得到test^Mtest^M
为什么结果不相等?
具体来说,为什么换行符是按字面写的,而不是在第二种情况下解释?
解决方案
来自:help c_ctrl-r
:
[…] 命令行结尾的字符按字面意思插入(
<Esc>
,<CR>
,<NL>
,<C-C>
)。[…]
- - 编辑 - -
<C-r>0
插入的内容,"0
就像您键入它一样。由于"0
包含一个<CR>
(实际上是两个,但第二个无关紧要):
test<CR>
test<CR>
这<CR>
将像您输入它一样输入,这将导致在输入完成之前执行命令:
:let @a = "test<CR>
由于E114
缺少"
.
这里的折衷方案是插入文字^M
而不是键入<CR>
以允许完成命令行。
你没有这个问题,:let @a = @0
因为没有打字和 I/O 参与:它只是传递的值。
推荐阅读
- ibm-mq - 确定访问我们本地队列的远程 MQ 队列管理器
- macos - 未找到 Visual Studio 2017 导入的项目。还尝试在后备搜索路径中找到“Xamarin.Android.CSharp.targets”
- python - 用于将配置单元表加载到 Apache solr 的 Shell 脚本失败
- python - GEOPANDAS .sjoin 'index_left' 和 'index_right' 不能是正在连接的框架中的名称
- python - 如何在不使用熊猫的情况下更改列的位置
- ios - 今天的 iOS 扩展程序是否与主机应用程序一起自动安装在用户的设备上?
- json - JSON DATA格式角度6的正则表达式模式
- python-3.x - 如何在此代码中包含空格和 n\
- bash - Shell 脚本删除一些文件
- android - Camera2 API 问题