Як у піднесеному тексті 2, як я можу відступити до прямої колонки з декількома курсорами на нерівній грані?


33

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

foo|
barr|
foobar|
baz|

Як я можу автоматично натиснути пробіл в кінці кожного рядка до плоского краю, як це?

foo    |
barr   |
foobar |
baz    |

(У цих прикладах, |як передбачається, мій курсор.)

Коли ви просто Tabабо Spaceз початкової домовленості, ви отримуєте це:

foo    |
barr    |
foobar    |
baz    |

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


Чи просто вставити вкладку або дві?
Darth Android

Ні, але я можу не зрозуміти. Я відредагував, щоб уточнити своє запитання.
GladstoneKeep

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

Це дивно. Натискаючи Tabв кінці кожного рядка відступи, нерівний мульти курсор вставляють у прямий стовпчик, але досягти такого ж ефекту за допомогою регулярного вираження неможливо. Я шукав пробіли: \s*$і замінив їх символом вкладки: \t- але \tне досягає такого ж ефекту, як натискання Tabвручну.
amiregelz

Відповіді:


10

Ви можете скористатися піднесеним вирівнюванням 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"до " align_chars " дає бажаний ефект. Додавання нового символу рядка до "align_space_chars", ймовірно, не потрібно і може видалити текст. Однак у своїх обмежених тестах я не побачив різниці.

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

Edit2: Якщо додати новий рядок до "alignment_space_chars"тексту, ви видалите текст, якщо ви виділите блок тексту, а піднесене вирівнювання не може знайти щось інше для вирівнювання на рядку (наприклад, знак рівності).

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


1
Ого, чудово! Я встановив пакет Sublime Alignment, додав "\n"(новий рядок) до свого "alignment_chars"і отримав бажаний результат. (Примітка. Я не додав його "alignment_space_chars", що призвело до видалення рядків.) Якщо ви додасте конкретну пропозицію ( "n") до своєї відповіді, я прийму.
GladstoneKeep

Приємно! Дуже корисний пакет для перфекціоністів, як я :)
amiregelz

3
Існує також аналогічний пакет: Вирівняти таблицю , який трохи гнучкіший (ви можете вирівняти за кількома символами).
d_rail

З вищезгаданим AlignTab d_rail, не забудьте втекти |єдиним `\`
користувачем

Я не можу повірити, що в цьому немає мільйона голосів.
Чарльз

44

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

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

  1. Створіть курсори на всіх потрібних рядках за допомогою Ctrl+ Клацання або, вибравши блок тексту та натиснувши 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. Натискайте, → (right arrow) поки курсори не знайдете потрібний стовпець:

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
  6. Натисніть Ctrl+ Shift+, щоб вибрати всі наступні пробіли, а cпотім натисніть Delete:

    foo    |
    barr   |
    foobar |
    baz    |
    
  7. ( необов'язково 1 ) DeleteЩе раз натисніть, щоб очистити зайвий символ пробілу, який ми додали на необов'язковому кроці.


1 Ми використовуємо cсимвол, за яким пробіл, лише якщо в рядках є додатковий вміст, який ми хочемо зберегти. Без цього Ctrl+ Shift+ вибрав би перше слово будь-якого додаткового вмісту в рядках, роблячи видалення складним.


2
Це виглядає скрученим спочатку, але це акуратний злом. Добре підходить для вставки стовпчиків з правильним вирівнюванням. Наступний стовпець можна вставити за допомогою плагіна з текстовим тістом.
користувач

1
Я деякий час використовую цю техніку, але будьте обережні , ctrl+shift+rightне обробляйте всіх персонажів послідовно, тому в кінцевому підсумку виберіть більше простого простору.
SpareBytes

1
Справді акуратний трюк, я згоден. Але я просто спробував це без персонажа в кінці, і використав, Shift-End Deleteі це просто вийшло. Чи працює це в деяких випадках, але в інших?
Септаграма

Це те, що я завжди роблю :)
Доміно

Це не працює, якщо cна одному рядку до кінця слова в іншому. Яка проблема у мене зараз. Окремі рядки не містять достатнього символу для прокручування вправо, тому коли ви переходите до наступного рядка, залишаючи цей злом просто таким. Це злом, а не корисна заміна.
leetNightshade

0

Для тих , хто хоче відступ від інших символів , ніж =та |я був в змозі встановити Alignment пакет і змінити файл в , 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текст міг би займати під час вирівнювання.

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