Я читаю книгу "Изучение редактора vi" (Линда Лэмб и Арнольд Роббинс, 6-е издание). На странице 115 книги есть такая команда:
:map ^J xyz
Сама по себе часть xyz здесь не имеет значения, моя проблема — сделать эту ^J
часть.
Я пробовал ctrl++ V ctrl( например, + можно использовать для выхода из Enter j) ctrlи + напрямуюvctrlj
В обоих случаях это не работает.
Я использую редактор vi внутри FreeBSD 11.0, это не vim (улучшенный vi).
----- Редактировать -----
Видео:
00:05 - привязка ctrl+K к dd (удаление всей строки)
00:19 - попробуйте сделать то же самое с помощью ctrl+J, но это не сработает, потому что ctrl+J вызывает таблицу.
00:25 - попробуйте еще раз с ctrl+V ctrl+J. Тоже не работает, вызывает таблицу.
00:33 - попробуйте карту именно "^J"
00:44 - попробуйте ctrl+J, и это не сработает так, как ожидалось. Это сработает, если набрать последовательность "^J".
решение1
На самом деле, это, кажется, ошибка в книге. Пример сопровождается этим комментарием:
В предыдущем примере, несмотря на то, что
^J
этови(перемещает курсор на строку вниз), эту клавишу можно безопасно назначить, поскольку она на самом деле такая же, какj
команда. Есть много клавиш, которые либо выполняют те же самые tsks, что и другие клавиши, либо используются редко. Однако вы должны быть знакомы свикоманды, прежде чем смело отключать их обычное использование, используя их в определениях карт.
Обычный вывод для^J
есть controlJ. Но ни один из vi, упомянутых в 6-м издании, не позволял вставлять в текст литеральный control/J, поскольку это конец строки для Unix-подобных систем (vim выдаст вам ^@
нулевой символ при попытке экранирования control/J, другие редакторы это игнорируют).буквальный" ^J
" не работает с комментарием, потому что эти символы не являютсявикоманда.
Вы можете сделатьбуквальный" ^J
" работать, конечно. Но это не было целью примера. Вероятно, автор имел в виду какой-то другой интересный персонаж и изменил его по какой-то причине.