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


14

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

Ответы:


11
:call cursor(0, len(getline('.'))/2)

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>

Кажется, что gm перемещает курсор в середину экрана, но если моя строка текста короче длины экрана, это не приведет меня к середине. Извините, что не разъяснил.
Теги

@teggy: Понятно. Я изменил свое решение, чтобы переназначить gm, чтобы перейти к середине текстовой строки. Как видите, в нем сочетаются решения от ephemient и Luc Hermitte.
JooMing

Как отметил ephemient, у него все еще есть проблема с жесткими tar-архивами, так как cursor () считает их по одному символу каждый. Более того, он также не будет работать с многобайтовыми символами.
Люк Эрмитт

7

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

:exe 'normal '.(virtcol('$')/2).'|'

1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.