Định cấu hình cột `gq` kết thúc tại?


9

Theo mặc định, sử dụng gqlệnh di chuyển sẽ kết thúc tốt văn bản được mô tả bởi lệnh chuyển động thành 79 cột. (Tôi còn khá mới với vi/ vimvì vậy tôi không biết thuật ngữ chính xác.) Làm cách nào tôi có thể định cấu hình số cột đó để thay vào đó nó bao bọc ở một số cột khác nhau?

Ví dụ: giả sử tôi có văn bản này:

This is text for illustration.

Tôi muốn có thể định cấu hình cột bọc thành 29 để nếu con trỏ của tôi nằm trong dòng và tôi chạy, gqipnó được chuyển thành:

This is text for
illustration.

Tôi đang sử dụng gVim trên Ubuntu Gnome 17.04, nếu điều đó tạo ra sự khác biệt.


EDIT: Tôi đang tìm cách bọc thủ công một số phần văn bản theo độ dài dòng nhất định mà không ảnh hưởng đến bất kỳ phần nào khác, bởi vì có một số trường hợp tôi ổn khi vượt quá giới hạn. Để mở rộng trên ví dụ trước, nếu tài liệu của tôi trông như thế này:

This is text for illustration.

This is some other text for illustration.

Và tôi chạy gqipbằng con trỏ ở dòng đầu tiên, tôi muốn nhận:

This is text for
illustration.

This is some other text for illustration.

Sau đó, nếu tôi bắt đầu nhập vào một dòng mới bên dưới dòng đó, tôi muốn dòng đó tương tự không bị ảnh hưởng bởi giới hạn.

Trường hợp sử dụng của tôi là khi viết tài liệu LaTeX: Tôi muốn có thể bọc các đoạn văn xuôi cho một số cột nhất định theo yêu cầu, nhưng trong một số trường hợp nhất định khi tôi viết các phương trình dài hoặc bảng, tôi muốn các dòng đó ở lại lâu hơn giới hạn.

Câu trả lời:


5

Bạn có thể làm điều này bằng cách cài đặt textwidthvà xóa tkhỏi formatoptions.

set textwidth=29
set formatoptions-=t

Bạn cũng cần phải qbật tùy chọn formatoptionsđể sử dụng gq. Nó dường như luôn luôn ở bên tôi, nhưng bạn có thể muốn thêm một bên set formatoptions+=qđể an toàn.

Không phải là một vấn đề với usecase hiện tại của bạn, nhưng ctùy chọn tự động kết thúc các nhận xét, vì vậy nếu bạn không muốn điều đó set formatoptions-=c.

Để biết thêm thông tin xem:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.

0

Có hai cách để làm điều này: thiết lập 'textwidth'độ rộng của văn bản của bạn theo các ký tự hoặc cột; thiết lập 'wrapmargin'theo chiều rộng của lề phải trong các ký tự hoặc cột. Ví dụ: để bọc văn bản của bạn với chiều rộng 29 ký tự hoặc cột:

set textwidth=29

Xem

:help 'textwidth`
:help 'wrapmargin'
:help 10.7

Cảm ơn phản hồi của bạn, nhưng đây không chính xác là những gì tôi đang tìm kiếm. Tôi muốn có thể tự bọc cứng một số phần văn bản mà không ảnh hưởng đến các phần khác. Đối với tôi, cả hai tùy chọn này đều tự động bọc văn bản mới mà tôi nhập. Tôi sẽ cập nhật câu hỏi để giải thích rõ hơn về điều này.
jdw1996

Vim không có cách tích hợp để làm điều đó. Các gqlệnh không quy định về thiết lập chiều rộng quấn mỗi invocation; nó tuân theo textwidthtextwidtháp dụng cho toàn bộ bộ đệm, không chỉ một số dòng nhất định. Nếu bạn ổn với việc gói thủ công các phần bạn muốn bọc, bạn có thể viết một hàm sẽ: lưu giá trị hiện tại của textwidth; đặt textwidththành 29; thực hiện gqtrên các dòng đã chọn; khôi phục giá trị của textwidth. Sau đó gán chức năng này cho formatexpr. Ngoài ra, bạn có thể sử dụng một chương trình bên ngoài như fmtđịnh dạng các dòng đã chọn.
garyjohn

OK, tôi hiểu rồi. Tôi sẽ xem xét viết một chức năng như vậy. Cảm ơn!
jdw1996
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.