Возвышенный текст: домашний ключ не перемещается в начало строки - PullRequest
0 голосов
/ 15 октября 2019

В возвышенном тексте я делаю следующее:

Ctrl + A (select all)
Ctrl + Shift + L (into column selection)
Home 

Я хочу, чтобы все курсоры шли в начало каждой строки. Но в некоторых строках курсор не идет в начало строки

Ниже показано, как определяется ключ home в Default

{ "keys": ["home"], "command": "move_to", "args": {"to": "bol", "extend": false} },

1 Ответ

0 голосов
/ 15 октября 2019

Все привязки клавиш, которые используют клавишу Home для перемещения курсора на начало строки, используют команду move_to для перемещения позиции курсора и указывают в аргументе to значение"bol". Это включает в себя не только «голую» клавишу, но и сдвинутую версию, расширяющую выбор, и т. Д.

Значение "bol" to указывает move_to переместить курсор в началолинии, но переключается между двумя разными «состояниями» начала строки:

  1. Место, где начинается текст строки (для строк с отступом), которое является «мягким» началом строки.
  2. Столбец 1, который является «жестким» началом строки

В зависимости от того, где в данный момент находится курсор, вы получаете тот или другой, но нажимая клавишу во второй разпереворачивает позицию в другое состояние.

Например, для примера Python, подобного следующему, где | - это место, где находится курсор:

def somefunc():|
    print("Hello")|

При первом нажатии Home , курсор переместится на p при печати, потому что это «мягкое» начало строки. Пока курсор находится там, при повторном нажатии Home курсор переместится в «жесткое» начало строки. Повторное нажатие Home вернет курсор на p. Для строки def курсор переместится в первый столбец, когда вы нажмете клавишу, и останетесь там, потому что он вообще не имеет отступа.

Общая идея заключается в том, что в большинстве случаев, когда вы хотите перейтив начале строки, это потому, что вы хотите внести изменения в текст, который начинается там, без учета отступа (в приведенном выше примере, скажем, вы хотели поменять print на log, это удобно, если когда вынажмите Home вам не нужно стрелять вправо, чтобы вернуться к функции).

В вашем конкретном случае вы можете увидеть, что это происходит при нажатии клавиши;строки, содержащие только отступ в пустом пространстве, переходят на начало, как и строки, которые физически начинаются в столбце 1. Вместо этого все остальные строки переходят на soft bol.

Если вы работаете с файлами или содержимым, гдепустые строки не имеют пробелов и действительно «пустые», тогда вы можете сделать то, что вы хотите сделать, нажав Home во второй раз. В этом случае все строки, которые в настоящее время находятся на soft bol, перейдут на hard bol, и любые строки, уже на hard bol, останутся там (потому что строка пуста).

В вашемслучай, который не будет работать, потому что все пустые строки содержат пробелы, поэтому нажатие клавиши поменяет эти строки на soft bol, в то время как остальные перейдут на hard bol вместо этого, и вы получите странный перевороткоторый никогда не приведет вас туда, куда вы хотите.

Один из способов исправить это - использовать команду trim_trailing_white_space, чтобы сначала удалить все конечные пробелы из строк, и в этом случае вы можете нажать Home. дважды.

Эта команда выполняется при сохранении файла и включении trim_trailing_white_space_on_save в ваших предпочтениях, но по умолчанию она не привязана ни к каким клавишам или элементам меню. Таким образом, для этого вам сначала нужно будет привязать его к клавише, добавить его в палитру команд, включить настройку и сначала сохранить содержимое и т. Д.

В качестве альтернативы вы можете привязать альтернативный ключ (или перезапустить). -привязать Home ключ) в ваших пользовательских привязках, чтобы указать вместо to из hardbol, что заставит этот ключ всегда переходить к столбцу 1 независимо от того, что:

{ 
    "keys": ["home"], 
    "command": "move_to", 
    "args": {"to": "hardbol", "extend": false} },
}


...