Trong Sublime Text 2, làm thế nào tôi có thể thụt vào một cột thẳng có nhiều con trỏ trên một cạnh rách rưới?


33

Giả sử tôi có nhiều con trỏ dọc theo một số dòng, như thế này:

foo|
barr|
foobar|
baz|

Làm cách nào tôi có thể tự động đẩy khoảng trắng ở cuối mỗi dòng ra một cạnh phẳng, như thế này?:

foo    |
barr   |
foobar |
baz    |

(Trong các ví dụ này, |được cho là con trỏ của tôi.)

Khi bạn chỉ Tabhoặc Spacetừ sự sắp xếp ban đầu, bạn sẽ nhận được điều này:

foo    |
barr    |
foobar    |
baz    |

Điều đó hữu ích, nhưng không phải là những gì tôi đang tìm kiếm. Tôi đang tìm kiếm một loại phím tắt nào đó cho phép tôi thụt vào từ một con trỏ đa rách rách chèn vào một cột thẳng.


Có phải chỉ cần chèn một tab hoặc hai công việc?
Darth Android

Không, nhưng tôi có thể không hiểu. Tôi đã chỉnh sửa để làm rõ câu hỏi của mình.
GladstoneKeep

Chỉnh sửa của bạn mô tả Space làm gì, và ở một mức độ nào đó, Tab sẽ thay đổi nếu các dòng của bạn thay đổi một lượng lớn, nhưng nếu tất cả đều khá gần thì sau hai tab, các con trỏ của bạn sẽ ở trên một tabstop. Bạn có thể phải thực hiện một chút điều chỉnh để có được tất cả trên cùng một tabstop, nhưng sẽ ít hơn là cố gắng điều chỉnh theo khoảng trắng.
Darth Android

Thật lạ. Nhấn Tabvào cuối mỗi dòng thụt vào con trỏ đa rách được chèn vào một cột thẳng, nhưng không thể đạt được hiệu ứng tương tự bằng regex. Tôi đã tìm kiếm dấu cách: \s*$và thay thế chúng bằng ký tự tab: \t- nhưng \tkhông đạt được hiệu quả tương tự như nhấn Tabthủ công.
amiregelz

Câu trả lời:


10

Bạn có thể sử dụng Sắp xếp tuyệt vời của wbond

Nó có thể yêu cầu bạn thêm phần này vào tệp cài đặt của bạn (Tùy chọn> Cài đặt gói> Sắp xếp> Cài đặt-Người dùng:

// 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": ["=", "|"]

Thay thế "|" với bất cứ nhân vật nào bạn muốn căn chỉnh.

Chỉnh sửa: Như mtoast đã tìm ra, thêm "\n"vào " căn_chars " sẽ mang lại hiệu quả mong muốn. Việc thêm ký tự dòng mới vào "căn chỉnh_space_chars" có thể không cần thiết và có thể xóa văn bản. Tuy nhiên, với các bài kiểm tra giới hạn của tôi, tôi không thấy sự khác biệt.

Giữ controlvà bấm vào cuối mỗi dòng. Sau đó nhấn các phím nóng căn chỉnh (Đối với linux, mặc định là ctrl+ alt+ a). Bạn sẽ thấy rằng các con trỏ được xếp cùng với vị trí con trỏ xa nhất.

Chỉnh sửa2: Thêm dòng mới vào "alignment_space_chars"sẽ xóa văn bản nếu bạn tô sáng một khối văn bản và Sắp xếp tuyệt vời không thể tìm thấy thứ gì khác để căn chỉnh trên dòng (như dấu bằng).

Ngoài ra, nếu Sublime AlVEL không thể tìm thấy thứ gì khác để căn chỉnh, việc thêm dòng mới vào "alignment_chars"sẽ kết thúc phần cuối của dòng bằng dấu cách (hoặc tab tùy thuộc vào cài đặt của bạn) để khớp với dòng dài nhất được tô sáng.


1
Woa thật tuyệt! Tôi đã cài đặt gói Sublime AlVEL, thêm "\n"(dòng mới) vào "alignment_chars"và nhận được kết quả mong muốn. (Lưu ý: Tôi không thêm nó vào "alignment_space_chars"., Khiến các dòng bị xóa) Nếu bạn sẽ thêm rằng cụ gợi ý ( "n") để trả lời của bạn, tôi sẽ chấp nhận.
GladstoneKeep

Tốt đẹp! Gói rất hữu ích cho những người cầu toàn như tôi :)
amiregelz

3
Ngoài ra còn có một gói tương tự: Align Tabular , linh hoạt hơn một chút (bạn có thể căn chỉnh trên nhiều ký tự).
d_rail

Với AlignTab nêu trên bởi d_rail, hãy nhớ để thoát |bởi một single `\`
sử dụng

Tôi không thể tin rằng điều này không có một triệu phiếu bầu.
Charles

44

Bạn cũng có thể làm điều đó mà không cần gói bên ngoài bằng cách sử dụng một hack nhỏ, chỉ với nỗ lực hơn một chút. Đây là cách thực hiện:

| đại diện cho một con trỏ trong các hướng dẫn này.

  1. Tạo con trỏ trên tất cả các dòng mong muốn bằng cách sử dụng Ctrl+ Nhấp hoặc bằng cách chọn một khối văn bản và nhấn Ctrl+ Shift+ L. ( tài liệu lựa chọn )

  2. Thêm khoảng trắng bổ sung vào cuối mỗi từ, cho đến khi mọi con trỏ ở hoặc qua điểm bạn muốn cột của mình (không quan trọng là quá khứ bao xa):

    foo     |
    barr     |
    foobar     |
    baz     |
    
  3. ( tùy chọn 1 ) Nhập bất kỳ ký tự nào theo sau khoảng trắng; hãy sử dụng c:

    foo     c |
    barr     c |
    foobar     c |
    baz     c |
    
  4. Nhấn Homeđể làm cho các con trỏ đi đầu dòng:

    |foo     c
    |barr     c
    |foobar     c
    |baz     c
    
  5. Nhấn → (right arrow) cho đến khi các con trỏ là nơi bạn muốn cột của bạn:

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
  6. Nhấn Ctrl+ Shift+ để chọn tất cả các khoảng trắng sau c, sau đó nhấn Delete:

    foo    |
    barr   |
    foobar |
    baz    |
    
  7. ( tùy chọn 1 ) Nhấn Deletelần nữa để dọn sạch ký tự khoảng trắng thừa mà chúng ta đã thêm trong bước tùy chọn.


1 Chúng tôi chỉ sử dụng cký tự theo dấu cách nếu có thêm nội dung trên các dòng mà chúng tôi muốn giữ. Nếu không có nó, Ctrl+ Shift+ sẽ chọn từ đầu tiên của bất kỳ nội dung bổ sung nào trên các dòng, khiến việc xóa trở nên khó khăn.


2
Điều này thoạt nhìn có vẻ vặn vẹo nhưng đó là một bản hack gọn gàng. Tốt cho dán cột với căn chỉnh phù hợp. Cột tiếp theo có thể được dán bằng cách sử dụng trình cắm thêm văn bản.
người dùng

1
Tôi đã sử dụng kỹ thuật này trong một thời gian nhưng hãy cẩn thận , ctrl+shift+rightkhông xử lý tất cả các ký tự một cách nhất quán để cuối cùng nó có thể chọn nhiều hơn chỉ là khoảng trắng.
Phụ tùng

1
Một mẹo thực sự gọn gàng, tôi đồng ý. Nhưng tôi chỉ thử nó mà không có một nhân vật ở cuối, và sử dụng Shift-End Deletevà nó chỉ hoạt động. Nó hoạt động trong một số trường hợp nhưng không phải là những người khác?
Septagram

Đây là những gì tôi luôn làm :)
Domino

Điều này không hoạt động nếu ctrên một dòng là trước khi kết thúc từ trên một dòng khác. Đó là vấn đề tôi đang có ngay bây giờ. Một số dòng nhất định không chứa đủ ký tự để cuộn sang bên phải, vì vậy khi bạn thực hiện nó sẽ chuyển sang dòng tiếp theo, để lại bản hack này. Đây là một hack, không phải là một thay thế bắt tất cả hữu ích.
leetNightshade

0

Đối với những người muốn thụt vào các ký tự khác =|, tôi có thể cài đặt gói Căn chỉnh và sửa đổi tệp trong Sublime Text > Preferences > Package Settings > Alignment > Settings - Userđể trông giống như sau:

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

Sau đó tôi đã chọn mã sau đây:

  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)}

và nhấn Command + Ctrl + Ađể căn chỉnh nó.

  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)}

Tất cả mọi thứ đã được chuyển đến cột ngoài cùng bên trái mà {createvăn bản có thể chiếm trong khi vẫn được căn chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.