Vim:为什么行末要使用$符号?

5
我刚开始使用Vim,想知道为什么要使用“$”来到达行末。例如,“0”将光标定位到开头,这至少有某种意义(键盘上的第一个数字对应行内第一个字母——可以理解)。
是否有任何逻辑支持使用“$”,还是仅仅是完全随意的?
一开始我以为“$”代表起点,然后我才想起它实际上是行末!
谢谢!

1
为了更好的用户体验,我更喜欢使用以下映射:noremap H ^ noremap L $ - Yann Moisan
4个回答

12
在某个时候它是任意的,但几十年来$一直是表示正则表达式中字符串结束的符号。 vim遵循历史先例,并使熟悉正则表达式语法的人非常直观地进行击键。

可能在某些情况下,^$曾经是相邻的,而且有意义的布局,但这只是纯粹的猜测。 - bitmask
$是计算机和语言理论中表示“输入结束”的经典符号。ASCII有一个“EOT”(文本结束)字符,但它是不可打印的。 - Apalala

2

美元符号在正则表达式中表示行尾,我认为这是任意的。

您还可以使用 A 键移动到行尾并切换到编辑模式。


2
如果你了解一些正则表达式,你就会知道在正则表达式中,$ 表示行末。我猜测,vi/vim 就是从这个想法中借鉴的。

0

我简直不敢相信vi(因此vim)从CP/M中抄袭了任何东西。 - Adrian Pronk
很可能不是直接借鉴的,但 CP/M 似乎也是从某些大型机操作系统中借鉴了它,因此用 $ 表示字符串末尾似乎是一个根深蒂固的传统惯例,其起源是个谜。 - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接