OSX: зміна підбору тексту за допомогою ⌘⇧ → і ⌘⇧ ←


10

Я вибрав текст за допомогою моєї клавіатури, починаючи з нижнього рядка і рухаючись вгору ( символ | вказує на позицію курсору):

AAA | {BBB CCC

DDD} EEE FFF

створити вибір


Тепер я хотів би змінити виділення так, щоб він починався в кінці першого рядка , тобто таким чином, щоб він виглядав так:

Очікуваний результат:

AAA BBB CCC | {

DDD} EEE FFF


Я можу зменшити виділення слово за словом за допомогою :

маніпулювати вибором за допомогою стрілок-параметрів-shift


Але природний спосіб зробити це було б через , перейти безпосередньо до кінця першого рядка. У багатьох гідних текстових редакторах це чудово працює (наприклад, Sublime Text 2). Вони також зберігають |позицію видимою, коли текст вибирається btw.

Однак поведінка програм OSX за замовчуванням полягає в тому, що вони ігнорують той факт, що курсор зараз знаходиться на початку вибору, а переміщення його вправо повинно видалити виділення там. Натомість завжди подовжує виділення від кінця до кінця рядка, незалежно від того, де знаходиться курсор на даний момент:

Фактичний результат:

AAA {BBB CCC

DDD EEE FFF} |

маніпулювати вибору за допомогою стрілок команд-shift


Чи є спосіб змусити також рідні програми OSX вести себе очікуваним способом?

Я перебуваю на OSX Yosemite 10.10.2, але я думаю, що це питання існує до тих пір, як я можу згадати.


Я можу це відтворити в 10.10.1 - можливо, це було виправлено у бета-версії?
0942v8653

1
Я на Yosemite 10.10.2 (також додаю це питання зараз). Але я думаю, що це завжди було так. Я в основному використовую редактори коду з хорошими можливостями редагування тексту, але я б хотів знайти рішення на цьому рівні для ОС.
Якуб Розтоцил

1
Перегляньте цей Документ підтримки Apple, в якому зазначено, що буде cmd + shift + стрілка вправо select text between the insertion point and the end of the current line. Єдиний рядок у вашому прикладі, де виділення вже не включає кінець рядка , - це останній рядок. Тож очікувана поведінка в OS X - це розширити вибір звідти, а не скоротити його на початку рядка! Я знаю, що деякі редактори поводяться інакше, але вони роблять це неправильно, а не система!
Асмус

1
@Asmus Після опису цієї (та багатьох інших) клавіатурних скорочень є невелика зірочка, але пояснення цьому немає. Будь-яка ідея, що (*)означає?
Якуб Розтоцил

1
Поняття не маю, що (*)означає, але це, мабуть, залишилося від попередніх версій документації. Я трохи оновив свою відповідь, щоб включити лише відомості про глобальне введення ключів, але, на жаль, я впевнений, що немає способу досягти того, що ви шукаєте. Оскільки поведінка не є вбудованою, додатки тепер не намагаються поводитися з нею, навіть якщо ви могли б її запустити.
Асмус

Відповіді:


1

Mac не використовує позицію курсора, якщо у вас є вибір декількох текстів, він вважає, що курсор знаходиться у "весь вибраний текст".

Ви можете це бачити, якщо ви використовуєте Cmd ⌘ Shift ⇧ замість
Додавання до вибору з Shift ⇧ включає попередній вибір.

Це не виправлення, але може бути вирішений спосіб, який перемістив би курсор до кінця поточного вибору, одночасно скасувавши його вибір, а потім Cmd ⌘ Shift ⇧ вибрати до початку рядка.


Що це означає? Msgstr "Багаторазовий вибір тексту".
Ніколя Барбулеско

1

Отже, як я це бачу, текстова навігація в OS X працює (і, як очікується, працює) приблизно так:

  1. Переміщення за рядком (або документом, тобто величезними фрагментами даних):

    cmd+ клавіші зі стрілками: рухається по рядках (ліворуч / праворуч для рядків, вгору / вниз для всього документа). Утримуйте, shiftщоб вибрати

  2. Переміщення за словом (тобто невеликими шматками даних):

    alt+ клавіші зі стрілками: рухається за словом (ліворуч / праворуч). Утримуйте, shiftщоб вибрати.

Отже, щоб досягти "очікуваного результату", слід спочатку натиснути стрілку праворуч, щоб довести її до кінця поточного вибору, а потім cmd+ shift+, щоб вибрати рядок, що веде до нього.

Коли у вас вже є вибір:

  1. використання altкомбінованих клавіш вище буде збільшувати / зменшувати вибір залежно від напряму (завжди змінюючи кінцеву точку попереднього вибору, припускаючи, що кінцеву точку ви пропустили трохи ). Те саме стосується додавання одиночних символів лише зі зміщенням + клавішами зі стрілками.
  2. збільшення cmdкомбо в обох напрямках, припускаючи, що ви все одно вибираєте великі шматки тексту .

Оновлення

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

plutil -convert xml1 /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict -o -|pl|grep -v noop:|ruby -pe '$_.gsub!(/[^ -~\n]/)' | grep -i selection

Ви побачите, що навіть незважаючи на те, що ви можете прив'язати спеціальні клавіші до всіх функцій вибору ~/Library/KeyBindings/DefaultKeyBinding.dict , немає такої функції, яка б досягала запитуваної поведінки (оскільки така поведінка не вбудована в систему).


Я думаю, що Apple Up та Apple Down йдуть на початок і в кінець документа, а не переходять за сторінками.
Ніколя Барбулеско

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