32

Предположим, у меня есть несколько курсоров вдоль нескольких строк, например:

foo|
barr|
foobar|
baz|

Как я могу автоматически вытолкнуть пробел в конце каждой строки на ровный край, как это ?:

foo    |
barr   |
foobar |
baz    |

(В этих примерах | должен быть моим курсором.)

Когда вы просто нажимаете Tab или Space из первоначального расположения, вы получаете это:

foo    |
barr    |
foobar    |
baz    |

Это полезно, но не то, что я ищу. Я ищу какое-то сочетание клавиш, которое позволит мне сделать отступ от рваной вставки с несколькими курсорами до прямой колонки.

3 ответа3

43

Вы также можете сделать это без внешнего пакета, используя незначительный взлом, лишь немного больше усилий. Вот как:

| представляет курсор в этих инструкциях.

  1. Создайте курсоры на всех нужных строках, используя Ctrl+Click или выделив блок текста и нажав Ctrl+Shift+L.(выбор документов)

  2. Добавляйте дополнительные пробелы в конец каждого слова, пока каждый курсор не окажется в точке, в которой вы хотите разместить столбец, или за ее пределами (не имеет значения, как далеко он прошел):

    foo     |
    barr     |
    foobar     |
    baz     |
    
  3. (необязательно 1) Введите любой символ с пробелом; давайте использовать c:

    foo     c |
    barr     c |
    foobar     c |
    baz     c |
    
  4. Нажмите Home, чтобы курсоры начинали строки:

    |foo     c
    |barr     c
    |foobar     c
    |baz     c
    
  5. Нажимайте кнопку → (стрелка вправо), пока курсоры не окажутся там, где вы хотите разместить столбец:

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
  6. Нажмите Ctrl+Shift+→, чтобы выбрать все следующие пробелы и c , затем нажмите Delete:

    foo    |
    barr   |
    foobar |
    baz    |
    
  7. (необязательно 1) Нажмите Delete еще раз, чтобы очистить лишний пробельный символ, который мы добавили на необязательном шаге.


1 Мы используем символ c за которым следует пробел, только если в строках есть дополнительный контент, который мы хотим сохранить. Без этого Ctrl+Shift+ выделит первое слово любого дополнительного содержимого в строках, что затруднит удаление.

10

Вы можете использовать Sublime Alignment от wbond

Может потребоваться добавить это в файл настроек («Настройки»> «Настройки пакета»> «Выравнивание»> «Настройки-Пользователь»):

// The mid-line characters to align in a multi-line selection, changing
// this to an empty array will disable mid-line alignment
"alignment_chars": ["=", "|"],
// If the following character is matched for alignment, insert a space
// before it in the final alignment
"alignment_space_chars": ["=", "|"]

Заменить "|" с любым персонажем, которого вы хотите выровнять.

Редактировать: Как выяснил mtoast, добавление "\n" к "alignment_chars" дает желаемый эффект. Добавление символа новой строки в "alignment_space_chars", вероятно, не требуется и может удалить текст. Однако, с моими ограниченными тестами я не видел разницы.

Удерживайте контроль и нажмите в конце каждой строки. Затем нажмите горячие клавиши выравнивания (для linux по умолчанию это ctrl + alt + a). Вы обнаружите, что курсоры выровнены с самой дальней позицией курсора.

Edit2: добавление новой строки в "alignment_space_chars" удалит текст, если вы выделите блок текста, и Sublime Alignment не сможет найти что-то еще для выравнивания на линии (например, знак равенства).

Кроме того, если Sublime Alignment не может найти что-то еще для выравнивания, добавление новой строки в "alignment_chars" будет заполнять конец строк пробелами (или табуляциями в зависимости от ваших настроек), чтобы соответствовать самой длинной выделенной строке.

0

Для тех, кто хочет сделать отступ для символов, отличных от = и | Мне удалось установить пакет выравнивания и изменить файл в Sublime Text > Preferences > Package Settings > Alignment > Settings - User чтобы он выглядел следующим образом:

{
  "alignment_chars": [
    "{create",
   ]
}

Затем я выбрал следующий код:

  let!(:admin_user) {create(:admin_user, :admin)}
  let!(:another_admin_user) {create(:admin_user, :admin)}
  let!(:superadmin_user1) {create(:admin_user, :superadmin)}
  let!(:superadmin_user2) {create(:admin_user, :superadmin)}
  let!(:nonadmin_user) {create(:admin_user)}

и нажмите Command + Ctrl + A чтобы выровнять его.

  let!(:admin_user)        {create(:admin_user, :admin)}
  let!(:another_admin_user){create(:admin_user, :admin)}
  let!(:superadmin_user1)  {create(:admin_user, :superadmin)}
  let!(:superadmin_user2)  {create(:admin_user, :superadmin)}
  let!(:nonadmin_user)     {create(:admin_user)}

Все было перемещено в крайний левый столбец, который может занимать текст {create то же время выравнивая.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .