Перейдіть до середини рядка in 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. :). Але дійсно ми повинні використовувати | а не курсор (). BTW, len () не дасть кращого результату. Більше того, len завдасть інших проблем з багатобайтовими символами.
Люк Ермітт

8

Введення тексту робило gmб це, але воно рухається по екранній лінії (див. :help gm). Для того щоб змусити його працювати з текстовими рядками, ви можете перезаписати цю команду:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm, здається, переміщує курсор на середину екрана, але якщо мій рядок тексту коротший, ніж довжина екрана, це не переводить мене на середину. Вибачте, що не уточнили.
teggy

@teggy: Я бачу. Я змінив своє рішення, щоб перезаписати GM, щоб перейти до середини рядка тексту. Як бачите, вона поєднує в собі рішення з ефемієнта та Люка Ермітта.
JooMing

Як вказувало ефемієнт, у нього все ще виникає проблема із жорсткими заклинками, оскільки курсор () рахує їх як один символ. Більше того, він також не працюватиме з багатобайтовими символами.
Люк Ермітт

7

Ось рішення, яке також поважатиме жорсткі вкладки та багатобайтові символи.

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

1

Ось найкраще рішення, яке я знайшов. Стрибки рівно до середини лінії не дуже практичні. Вам, швидше за все, потрібно буде перемістити курсор на кілька позицій після переміщення в середину. Що робити, якщо ви могли перейти до конкретного персонажа? Багато людей просто шукають персонажа, а потім натискають «наступний», поки не дістаються до нього. Це повільно. Плагін Easy-Motion пропонує краще рішення.

Мій улюблений <leader><leader>sтоді персонаж, до якого ти хочеш стрибнути. Easy Motion замінює всі збіги різними літерами, які ви можете вибрати. Дивіться підручник. Його плагін, що змінює життя ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.