Перейти к середине строки в VIM

14

Я знаю, 0 идет в начало строки, а $ - в конец, но есть ли что-то для середины?

teggy
источник

Ответы:

11
:call cursor(0, len(getline('.'))/2)
ephemient
источник
4
Это было бы весьма полезно, если бы оно было отображено, например:: nnoremap gm: call cursor (0, len (getline ('.')) / 2) <cr>
Гептит
3
virtcol ('$') / 2 достаточно.
Люк Эрмитт
@Luc Hermitte: Хорошее, но не совсем лучшее поведение, когда задействованы жесткие вкладки.
Эфимент
Вот почему я использую virtcol вместо col. :). Но на самом деле мы должны использовать | а не курсор (). Кстати, len () не даст лучшего результата. Кроме того, len будет доставлять другие неприятности с многобайтовыми символами.
Люк Эрмитт
8

Печатание gmсделало бы это, но это перемещается линиями экрана (см. :help gm). Чтобы заставить его работать с текстовыми строками, можно переназначить эту команду:

map gm :call cursor(0, virtcol('$')/2)<CR>
JooMing
источник
Кажется, что gm перемещает курсор в середину экрана, но если моя строка текста короче длины экрана, это не приведет меня к середине. Извините, что не разъяснил.
Теги
@teggy: Понятно. Я изменил свое решение, чтобы переназначить gm, чтобы перейти к середине текстовой строки. Как видите, в нем сочетаются решения от ephemient и Luc Hermitte.
JooMing
Как отметил ephemient, у него все еще есть проблема с жесткими tar-архивами, так как cursor () считает их по одному символу каждый. Более того, он также не будет работать с многобайтовыми символами.
Люк Эрмитт
7

Вот решение, которое учитывает жесткие вкладки и многобайтовые символы.

:exe 'normal '.(virtcol('$')/2).'|'
Люк Эрмитт
источник
1

Вот лучшее решение, которое я нашел. Прыжки точно на середину линии не очень практичны. Скорее всего, вам все еще нужно переместить курсор на несколько позиций после перемещения в середину. Что если бы вы могли перейти к определенному персонажу? Многие люди просто ищут персонажа, а затем нажимают «следующий», пока не достигнут его. Это медленно. Плагин Easy-motion предлагает лучшее решение.

Мой любимый <leader><leader>sперсонаж - персонаж, к которому вы хотите перейти. Easy Motion заменяет все совпадения разными буквами на ваш выбор. Смотрите учебник. Это плагин, который меняет жизнь ...

Сэм Руберти
источник