Для некоторых текстовых форматов переносы строк имеют значение.
Например, я часто использую Vim для написания документов MediaWiki, где вы не можете просто поместить перенос строки где-либо (в отличие от Markdown). Поэтому я вынужден писать строки с большим количеством символов.
Это может привести к длинным (более 200 символов) или даже очень длинным (более 1000 символов) линиям. Я нахожу это очень неудобным для использования в Vim. Одним из примеров является то, что если я хочу что-то отредактировать в середине строки из 1000 символов, мне нужно переместить курсор 500 раз.
Это можно сделать немного быстрее с помощью w
или /
, но это все еще неудобно.
Есть ли лучшие способы справиться с этим? Лучше движение клавиш? Какая-то «фальшивая обертка» (текст ведет себя так, как будто tw=80
, но нет \n
в файле), или что-то еще?
источник
Ответы:
Вы можете использовать
g
ряд команд для перемещения к границам видимой области экрана. Например, g$перемещается к правому краю экрана (который не обязательно является концом строки). gjперемещает курсор вниз на одну строку так, как он отображается на экране (что не обязательно на одну логическую строку вниз).Возможно, вы могли бы привязать клавиши со стрелками:
Или некоторые люди также напрямую перепривязывают kи j:
Для режима вставки вы можете использовать:
Или:
Кроме того, если вы используете
:set wrap
, Vim обернет строки, чтобы вы могли видеть все строки. Вы также можете использовать,set showsbreak=+
чтобы показать,+
что Vim выполняет перенос.Чтобы перейти к определенным позициям столбца, вы можете использовать |команду. Например, 200|перейдем к позиции столбца 200.
источник
g5j
прыгнуть на 5, как обычно.5gj
g5j
,g5
видно , первый, который просто переходит к следующему ,5
прежде чем применятьj
. Вот почему он не может делать то, что5gj
делает.Vim поддерживает мягкую упаковку, просто
set wrap
чтобы включить ее, и она будет переносить длинные строки, выходящие за пределы видимого экрана. Вы можете использоватьgj
&gk
для перемещения вверх / вниз по таким обернутым линиям.источник
Когда я имею дело с очень длинными линиями, самая большая болевая точка связана с различными длинами линий. Таким образом, перемещение вверх или вниз по концам линий прокручивает окно очень далеко влево или вправо.
Этого можно избежать с помощью настройки
virtualedit=all
, которая позволяет перемещать курсор в пространство намного позже окончания строки.источник
Как уже говорили другие, вы можете использовать g+ что-то для перемещения. Однако, когда у вас очень длинные строки, нажатие gjнесколько раз для перемещения вниз не эргономично. У меня есть следующее,
.vimrc
чтобы сделать это намного проще:На Mac это позволяет мне использовать j, k, $, 0 и ^ в строках дисплея, удерживая клавишу Command. На других системах вместо
D
вас можно было бы попробоватьM
либоA
для Alt, либоC
для Control.источник