Я видел где-то в Интернете кого-то, кто использовал, 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
: есть только три пути идти вверх: k
, <UP>
и ctrl-p
. Таким образом, бонусный вопрос: почему есть 5 способов понижения и только 3, чтобы подняться?
cursor-movement
statox
источник
источник
Ctrl-J
привязку по умолчанию ? Кажется распространенным, по крайней мере, среди тех, кого я знаю, отображатьCtrl-J/K
«вниз / вверх до следующей строки с тем же уровнем отступа, что и у начальной строки».<CR>
здесь»Ответы:
Интересно, что вы упомянули
<CR>
.<CR>
или возврат каретки, технически используемый для обозначения перехода к началу линии .<NL>
или перевод строки (также называемый обычно переводом строкиLF
) использовался для обозначения перехода к следующей строке . Со временем это различие было потеряно в большинстве приложений. 1 Нажатие Enterфактически приводит к возврату каретки, обычно (попробуйте нажать CtrlVEnter- вы должны увидеть^M
в терминалах Unix).<NL>
контрольный код есть CtrlJ.CtrlNудивило меня. Согласно 2 , это сдвиговый персонаж:
man ascii
Смещение и смещение из символов, согласно Википедии :
То, как это закончилось, означало идти вниз , для меня загадка.
Что ж, у всех трех способов подняться есть свои способы спуститься. ( CtrlPпредположительно является дополнением CtrlN, подразумевая, что сдвиг в / из здесь не имеет значения). Два дополнительных пути вниз (
<NL>
или CtrlJ) на самом деле являются двумя представлениями одного и того же пути.<NL>
это наследство со времен пишущей машинки - и в те дни, я не думаю, что был ключ, чтобы подняться - только чтобы упасть.Смотрите также:
1 В некоторых случаях это по-прежнему имеет значение (печать
\r
(возврат каретки) и\n
(перевод строки) с использованием большинства форматированных функций / инструментов печати по-прежнему сохраняют прежнее значение.).2 Эта таблица составлена таким образом, что алфавит соответствует контрольному коду символа в той же строке.
источник
Ctrl-N
для следующего , иCtrl-P
был для предыдущего . Это то, что они обозначают в Emacs, в любом случае, в котором они связаныnext-line
иprevious-line
. Кроме того,Ctrl-P
не сдвиг в ; это побег канала передачи данных . Сдвиг в томCtrl-O
.См
:help key-notation
.<NL>
означает «перевод строки» и<CR>
означает «возврат каретки».Это два разных способа разрыва текущей строки. Они исторически связаны с различными управляющими символами (
ctrl-j
иctrl-m
) , но, как правило , вставляются с тем же ключом,<CR>
. Я согласен, что использование<NL>
в этом контексте кажется нелогичным.Все эти «отображения» (на самом деле они не являются отображениями) ведут себя одинаково.
История, в основном, также кроссплатформенные ограничения.
На терминале Билла Джоя не было выделенных клавиш управления движением, но на
hjkl
клавишах были наклейки со стрелками. Поскольку модальные редакторы в то время были редкостью, нажатие этих клавиш только вставляло связанный символ во все, что вы делали. Вы должны были нажать<C-h>
,<C-j>
,<C-k>
и<C-l>
для перемещения курсора на экране.Как вы можете видеть, есть довольно перекрытие между
j
,<C-j>
,<NL>
и<Down>
.<C-n>
Вообще говоря, что означает «следующий» в Vim, легко увидеть, как он смешался со своими товарищами.Поскольку все они являются синонимами, вы можете использовать тот, который лучше всего подходит для вас.
<CR>
Например, интересный ключ для использования в ваших собственных сопоставлениях.источник
<CR>
отображением. Также еще один вопрос: я знаю, что эти «комбинации клавиш» на самом деле не называются отображениями, но я не знаю, как их следует называть?:ls
,:substitute
,new
и т.д ...?x
это тоже "команда".x
,dd
,c
и т.д. «команды». Таким образом , вы должны быть правы, я думаю , чтоj
и^J
также команда.