Ctrl-J
,但由于我不了解此映射,因此我在相关文档中进行了查找,发现了以下内容:j or
<Down> or
CTRL-J or
<NL> or
CTRL-N [count] lines downward linewise.
是谁带领我几个问题:
<NL>
是什么:我会认为它等同于<CR>
,因为默认情况下按Enter会在正常模式下向下一行,但为什么呢<NL>
不是<CR>
吗?这些映射之间有什么区别:这5个选项是否都以相同的方式向下排列?根据我的测试,我会回答“是”,但这会引出我的下一个问题。为什么有5个映射执行完全相同的操作:我可以理解
j
和<down>
保留给以下用户:不用于vim映射,但是为什么其他映射存在? 什么时候比另一种更有趣:这是上一个问题的延续:如果有太多可能性,我猜想它们有不同的优势或在特定情况下更适合使用用例。这些用例是什么?
当我看
:h k
时,发现这些命令的冗余更加奇怪:只有3种上升方式:k
,<UP>
和ctrl-p
。因此,奖金问题是:为什么有5种下降的方式而只有3种上升的方式?#1 楼
您提到<CR>
有趣。 <CR>
或回车符,从技术上讲,是指转到行的开头。 <NL>
或换行符也称为换行符(通常称为LF
)用于表示转到下一行。随着时间的流逝,大多数应用程序之间的区别消失了。1按Enter实际上通常会产生回车符(尝试按CtrlVEnter-在Unix终端中应该会看到^M
)。 <NL>
的控制代码是CtrlJ。man ascii 2,它是移出字符:
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
016 14 0E SO (shift out) 116 78 4E N
根据维基百科,移入和移出字符:
...提供了一种移动方式,因此命名是彩色的色带,通常在纵向上以红色和黑色分开,在电动机械打字机或电传打字机中上下浮动为其他颜色...
最终的含义对我来说是一个谜。
为什么有5种下降的方式,只有3种下降的方式向上吗?
好吧,三种上升方式都有相应的下降方式。 (CtrlP大概是CtrlN的补充,这意味着移入/移出与此处无关)。向下的另外两种方式(
<NL>
或CtrlJ)实际上是相同方式的两种表示形式。 <NL>
是打字机时代的继承者-在那些日子里,我认为没有上升的钥匙-只能下降。另请参见:
什么是回车,换行和换页?
1在某些情况下仍然很重要(使用大多数格式化的打印功能打印
\r
(回车)和\n
(换行)/工具仍然保留了原来的含义。)2该表的排列方式使得字母对应于同一行上字符的控制代码。
评论
我一直以为Ctrl-N用于下一个,而Ctrl-P用于上一个。无论如何,这就是它们在Emacs中所代表的含义,即它们绑定到下一行和上一行。此外,Ctrl-P不会移入;这是数据链接转义。移入是Ctrl-O。
– Lithis
2015年8月10日17:24
@Lithis我已纠正。
–muru
15年8月10日在17:25
@Lithis老实说,我对Emacs唯一了解的是c-x c-e。
–muru
15年8月10日在17:28
历史明确的答案,非常感谢Muru!我应该想到答案通常位于其中的字符的ASCII码。
–statox♦
15年8月11日在7:59
@muru太糟糕了,因为Emacs实际上提供了很多东西,特别是它的组织模式对我有很大帮助。我建议您检查一下项目Spacemacs github.com/syl20bnr/spacemacs,该项目主要关注Vim仿真,因此您不需要知道任何传统的Emacs命令即可使用。也许那会改变您的看法。
– xji
2015年8月15日在3:10
#2 楼
请参阅:help key-notation
。<NL>
表示“换行”,而<CR>
表示“回车”。这是断开当前行的两种不同方式。从历史上讲,它们绑定到不同的控制字符(
ctrl-j
和ctrl-m
),但通常使用相同的键<CR>
插入。我同意在这种情况下使用<NL>
似乎违反直觉。所有这些“映射”(它们实际上不是映射)的行为方式完全相同。
历史在很大程度上也跨平台约束。
没有专用的运动键Bill Joy的终端,但是箭头贴花在
hjkl
键上。由于模态编辑器在当时很少见,因此按这些键只会将关联的角色插入到您所做的任何事情中。您必须按<C-h>
,<C-j>
,<C-k>
和<C-l>
才能在屏幕上移动光标。您可以看到,
j
,<C-j>
,<NL>
和<Down>
之间有很多重叠。 <C-n>
在Vim中通常意为“下一个”,很容易看出它是如何与同志们融合在一起的。由于它们都是同义词,因此您可以自由使用效果最佳的一个例如,
<CR>
是用于您自己的映射的有趣键。评论
感谢您的启发!我非常同意
–statox♦
15年8月11日在8:01
这是一个有趣的问题,我倾向于称它们为“命令”。
– romainl
15年8月11日在8:17
我可能是错的,但是“命令”不是指诸如:ls,:substitute,new等之类的ex模式命令吗?
–statox♦
15年8月11日在8:41
x也是一个“命令”。
– romainl
15年8月11日在9:06
实际上,我只是看到该文档将x,dd,c等称为“命令”。所以您一定是正确的,我想j或^ J也是命令。
–statox♦
15年8月11日在9:12
评论
您确定他们使用的是默认的Ctrl-J绑定吗?至少在我所知的范围内,将Ctrl-J / K映射到“向下/向上直到下一行与起始行具有相同缩进级别”似乎是很常见的。我想回答“为什么有5种下降的方式而只有3种上升的方式?”好吧-这是因为,在生活中,事情往南走就容易了! :)
@VanLaser确实是一个很好的答案,他们应该考虑在文档中添加此提示! ;-)
@VanLaser太可惜了。以这种速度,全人类将立即沦为虚无!
“放弃希望,