Відрегулюйте інший кінець візуального вибору


14

Я думаю, що це дозволило б функції візуального вибору vim перевершити ефективність навіть миші, надавши можливість "перемикати" поточний кінець вибору:

Illustrated (The |представляють курсор (Vim має його працювати на лівій стороні персонажа він включений) і [text]являє собою виділений текст, просто робити вигляд , що вони займають нульову ширину. Фон простору між [ ]виглядає сірим, і характер відразу наступний |зелений):

Починати з

Some |text here
Some second line of text
Some more text in the third line 

Натисніть v2j; Зверніть увагу, що mсимвол включений у виділення (він виділений курсором зараз):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Натисніть 10l:

Some [text here
Some second line of text
Some more text |i]n the third line 

Саме в цей момент я можу вирішити, що хочу почати вибір з іншого місця розташування. наприклад, включаючи "Some"перший рядок.

У мене немає вибору в типовому редакторі / IDE. Мені, мабуть, доведеться перенести руку мишею, зазвичай вибирати текст традиційними методами занадто боляче, використання перескакування слів через Ctrlперегляд сторінки та вгору / вниз дещо допомагає, але незалежно від того, що я маю зробити до однієї з моїх кінцевих точок вибору, перш ніж розпочати вибір .

Тож у Vim мені б хотілося за здатність прийняти свій сучасний стан і довести його до цього, потрапивши в таємничу прив'язку:

Some [|text here
Some second line of text
Some more text i]n the third line 

Тоді я можу просто натиснути ^або <Home>(і те й інше зробити те саме в цьому випадку, коли немає провідного пробілу), щоб перетворити його

[|Some text here
Some second line of text
Some more text i]n the third line 

Скажіть, я знову передумав , хочу налаштувати інший кінець!

[Some text here
Some second line of text
Some more text |i]n the third line 

Попадання e:

[Some text here
Some second line of text
Some more text i|n] the third line 

Гарний! Зараз я можу робити все, що хочу далі, з цим вибором.

То що це за таємнича прив’язка?

Крім того, ще більш потенційно ефективним був би набір альтернативних прив’язок для деяких найбільш використовуваних команд руху до іншого рядка клавіш, і вони завжди (у візуальному режимі) завжди переміщують інший кінець вибору. Тож у цій операції вибору візуального режиму, якби клавіші переміщення для іншого кінця вибору були встановлені на "yuio" (можливо, це не вдалий вибір, оскільки нам це потрібно, yале просто мати з собою), ми могли б набрати

v2j10l5ye

а не

v2j10lX^Xe

Гей, ти знаєш що, це навіть не так багато покращення. Просто дайте цю функцію X. :)

Ідеальні відповіді, які я шукаю:

  • Гей, дивись :help some_awesome_vim_feature_that_just_does_this
  • Гей, дивись https://github.com/awesome_user/vim_plugin_that_does_this
  • Гей, дивись :help vimscript_functions_that_allow_mutation_of_visual_selections

Я досить новий у захопленні від Vim, тому я дуже зелений, коли мова йде про Vimscript, і, чесно кажучи, я хотів би триматися подалі від спроб вивчити ще одну мову, тому, сподіваюся, я не змушу будувати це як плагін.


Добре. Зараз я не знаю, що тут відбувається (питання загадково перенесло ніндзя з SO в SU), але я спочатку опублікував це на SO, і я дійсно вважаю за краще, щоб він залишився там. При всій повазі до непрограмістів, тільки програмісти могли коли - або піклуватися стільки про редагування тексту. Звичайно, всі користувачі vim могли б отримати користь від того, як дізнатися, як це може працювати, я просто думаю, що це отримає більше очних яблук і кращі шанси отримати відповідь там, де є плагін-розробник.
Стівен Лу

Чи читаєте ви іноді :help? :help visual-modeмістить всю інформацію, яка вам може знадобитися про візуальний режим, в тому числі o.
romainl

Я іноді це читаю, але це, мабуть, могло пройти приблизно в той же час, виписуючи свої думки. Це більш певне завдання, ніж здогадуватися, що таке довідковий рядок.
Стівен Лу

Навчатися краще, ніж здогадуватися. Відповідь Гептита навчила вас двох речей, чи можете ви їх назвати?
romainl

Так, я маю на увазі, що багато чого слід дізнатися, але я вже забув, що Oробить столиця O, але я згадаю o. Друге, про що йдеться, - це, мабуть, :helpбільше використовувати . І я використовую його більше, ніж коли я починав.
Стівен Лу

Відповіді:


49

Я не впевнений, що насправді розумію, чого ти хочеш, але, можливо, саме так:

:help v_o

В основному, візуально виділяючи текст, ви можете натиснути, oі він перескочить на інший "кінець" зорової області, не змінюючи його.


2
Святе лайно, так !!! Це навіть краще, ніж я сподівався, він вже пов'язаний з одним ключем , тому Xвище насправдіo
Стівен Лу

1
Дозвольте мені також зазначити, що миша правою кнопкою миші (якщо у вас термінал налаштований передати його на Vim) розумно дозволить йому налаштувати найближчий кінець поточного візуального вибору на те, де знаходиться курсор. Це робить його набагато меншим больовим методом для коригування області вибору, оскільки він не відкидає розташування протилежного кінця виділення.
Стівен Лу

@StevenLu: Це все одно не викидається. Можна oзнову торкнутись і повернутися назад.
Гептит

@StevenLu Це, мабуть, має бути прийнятою відповіддю, враховуючи, що вона не тільки вирішила вашу проблему, має тону підсумків, також трапилося саме те, що мені потрібно було в першому результаті Google, і фактично є єдиною відповіддю, яку хтось подав ...
Кінгдон

Так, я думаю, що я ніколи не приймав це, оскільки він був розміщений так швидко, що мені ще не було дозволено це робити в той час, і я із задоволенням використовую цю функцію Vim протягом майже п’яти років з того часу, ніколи не потрібно нагадувати собі, що Ключовим моментом є те, що запам'ятати це дуже просто.
Стівен Лу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.