Hoàn thành WORDs


13

<C-p><C-n>cho phép hoàn thành các từ được tìm thấy trong tài liệu hiện tại.

Tôi đang ghi chép và viết nói {0,1}^n(E,D)nhiều lần. Đây là những WORD được cấu thành bởi một số từ.

Có cách nào để hoàn thành các WORD với <C-p><C-n>(hoặc ins-completionlệnh liên quan khác ) không?


1
Bạn có thể tốt hơn sử dụng :abbreviatethay thế. Ví dụ, ban hành :ab 01n {0,1}^nlệnh. Sau đó, mỗi khi bạn nhập 01ndưới dạng một từ độc lập trong chế độ Chèn, nó sẽ mở rộng thành {0,1}^n.
200_success 20/2/2015

@ 200_success, cảm ơn bạn. Tôi đã nghĩ về chữ viết tắt nhưng tôi vẫn muốn biết nếu nó có thể với ins-completion.
Gonçalo Ribeiro

Câu trả lời:


5

Hoàn thành chế độ chèn với Ctrl-n

Tôi không biết nếu bạn có thể hoàn thành WORD ngoài việc viết chức năng của riêng bạn (như omnifunc). Tuy nhiên, nếu bạn không ngại mở rộng từ nào phù hợp với các ký tự của mình, bạn có thể thêm các ký tự đó vào 'iskeyword'

Ví dụ: 'iskeyword' của tôi mặc định là

iskeyword=@,48-57,_,192-255

Sau đó tôi đặt nó vào đó cộng với các ký tự bổ sung ở trên

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

Điều này thêm {, }, ,, (, ), và ^các nhân vật tạo nên một từ (ngoài những gì đã làm)

Sau đó, việc nhập {Ctrl-nhoàn tất {0,1}^n(trong một tệp chỉ chứa hai ví dụ bạn đã đưa ra)

Lưu ý: Sẽ tốt hơn nếu chỉ làm một :set iskeyword+=công cụ bổ sung, như sau:

:set iskeyword+={,},,,(,),^

Bằng cách này, bạn để lại bất cứ thứ gì khác tạo nên một từ khóa bằng cách nối thêm các ký tự mới vào cài đặt hiện có.

Mở rộng với chữ viết tắt

Mặc dù không phải là một phần của câu hỏi ban đầu, một chức năng tương tự (ish) khác là sử dụng chức năng viết tắt của nvi hoặc Vim. Không giống như hoàn thành từ khóa, chữ viết tắt không phải trông giống như văn bản cuối cùng. Cũng không giống như hoàn thành từ khóa, chữ viết tắt mở rộng tự động, thay vì chỉ khi bạn yêu cầu chúng. Tùy thuộc vào mục tiêu và cách sử dụng của bạn, điều này có thể tiết kiệm rất nhiều cách gõ và cho phép bạn nhập nhiều văn bản mà không bị gián đoạn yêu cầu hoàn thành.

Chữ viết tắt phù hợp với một nhóm từ khóa nhỏ và khi bạn có thể xác định chúng trước thời hạn (chúng không được phát hiện từ văn bản của bạn giống như hoàn thành từ).

Ý tưởng cơ bản đằng sau các chữ viết tắt là bạn liên kết một WORD với một số văn bản khác và bất cứ khi nào trình soạn thảo phát hiện ra rằng bạn đã gõ WORD đó (nghĩa là văn bản bạn đã nhập được bao quanh bởi khoảng trắng, trong đó hành động hoàn thành sẽ thêm khoảng trắng sau từ khóa hoặc rời khỏi chế độ chèn), nó được thay thế bằng văn bản khác.

Giả sử tập tin của bạn chứa {0,1}^nrất nhiều và không có các biến thể khác của nó. Gõ là hơi dài một ngón tay, vì vậy có thể bạn chỉ muốn gõ 01nhoặc myvaluemở rộng ra {0,1}^n, nhưng chỉ khi 01nhoặc myvaluelà một từ riêng (nghĩa là, nếu nó xuất hiện trong một từ khác, đừng thay đổi nó).

Trong nvi, bạn có thể làm :abbrev 01n {0,1}^n. Bạn có thể làm tương tự trong Vim, nhưng tôi khuyên bạn nên sử dụng :iabbrev 01n {0,1}^nđể hạn chế mở rộng chỉ ở chế độ chèn.

Sau đó, nếu bạn có một số văn bản (nơi |đại diện cho con trỏ)

We find that the value 01n|

Và sau đó bạn nhấn Eschoặc Spacehoặc Tabdi chuyển các con trỏ, văn bản sẽ được thay thế và bạn có (ví dụ để sử dụng khoảng trắng)

We find that the value {0,1}^n |

và bạn có thể tiếp tục gõ mà không bị gián đoạn.

Điều này thường được sử dụng để tự động sửa lỗi chính tả phổ biến (ví dụ: thay đổi 'teh' thành 'the') nhưng nó có thể hữu ích như nhau cho trường hợp sử dụng của bạn, một lần nữa giả sử rằng bạn không ngại thiết lập ánh xạ trước thời hạn.


Đối với tôi có vẻ như :set iskeyword+={,},,,(,),^hoạt động như mong đợi.
Karl Yngve Lervåg

1
Quả thực là như vậy. Khi tôi thử nó lần trước, Vim cứ nói với tôi rằng đó là lỗi cú pháp. Nó phải ở một nơi khác. Cập nhật câu trả lời của tôi.
John O'M.

@ JohnO'M. bạn có thể thêm một tài liệu tham khảo về cách abbreviatecó thể phù hợp hơn cho công việc này?
Gonçalo Ribeiro

@ GonçaloRibeiro đã xong. Tôi hy vọng nó sẽ giúp.
John O'M.
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.