法线贴图不起作用
由于某种原因,以下地图无法正常工作:
nmap ,u :.g/./t.|s/./=/g
一旦我输入 ,u
在这样的行上:
lorem ipsum
它应该转换为:
lorem ipsum
===========
结果:我在窗口底部看到 :.g/./t.
。然后我尝试转义 |
,现在一旦我使用映射,我只会在底部看到 :.g/./t.|s/./=/g
,什么也没有发生。
可能有更好且无错误的方法来做到这一点,我仍然是初学者。
谢谢!
For some reason, the following map is not working:
nmap ,u :.g/./t.|s/./=/g<CR>
It was intended that once I typed ,u
on a line like this:
lorem ipsum
It should transform into:
lorem ipsum
===========
The result: I see :.g/./t.
in the bottom of the window. Then I tried escaping the |
, and now once I use the mapping I simply see :.g/./t.|s/./=/g
in the bottom, and nothing happens.
There probably is a better and error-free way to do it, I still a beginner.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要在映射中转义栏:使用
\|
或
。现在它被解析为两个命令:nmap ,u :.g/./t.
和s/./=/g
。并且不要使用
nmap
,而使用nnoremap
。更新:虽然映射的转义变体有效,但我会将其写为
yyp:s/./=/g
,如:call append('.', Repeat('=', strdisplaywidth(getline('.'))))
(vim-7.3,最佳变体)或作为:call append('. ', Repeat('=', len(split(getline('.'), '\zs'))))
(vim-7.2, 对于制表符和全角字符也有同样的问题作为 yyp... 变体,但不会覆盖任何寄存器)。You need to escape bar in mapping: either use
\|
, or<bar>
. Now it is parsed as two commands:nmap ,u :.g/./t.
ands/./=/g<CR>
.And do not use
nmap
, usennoremap
.Update: though escaped variant of your mapping works, I would have written it as either
yyp:s/./=/g<CR>
, as:call append('.', repeat('=', strdisplaywidth(getline('.'))))<CR>
(vim-7.3, best variant) or as:call append('.', repeat('=', len(split(getline('.'), '\zs'))))<CR>
(vim-7.2, has just the same problems with tabs and fullwidth characters asyyp...
variant, but does not overwrite any registers).