2011-10-17 5 views
5

Có loại hoàn tất không được liệt kê trong tệp trợ giúp vim (đáng chú ý: insert.txt), nhưng theo bản năng tôi cảm thấy cần phải thay đổi thường xuyên. Giả sử tôi có từ "Awesome" và "SuperCrazyAwesome" trong tệp của tôi. Tôi tìm thấy một trường hợp của Awesome mà thực sự nên là SuperCrazyAwesome, vì vậy tôi bắt đầu từ, nhập chế độ chèn, và sau đó phải gõ "SuperCrazy".hoàn thành mã nội bộ trong vim

Tôi cảm thấy mình có thể nhập "S", tạo "Scrazy", và sau đó chỉ cần nhấn phím nóng hoàn thành hoặc hai để tìm nó ở bên trái con trỏ ("S"), cái gì là bên phải ("Crazy"), regex này chống lại tất cả các từ trong tập tin ("/ S \ w * Crazy /"), và cung cấp cho tôi một menu popup hoàn thành, hoặc chỉ thay thế nếu chỉ có một trận đấu.

Tôi muốn sử dụng hệ thống hoàn thành thực tế cho việc này. Có tồn tại một "người dùng xác định" hoàn thành trong đó sử dụng một chức năng, và có một ví dụ tốt trong sự giúp đỡ để thay thế từ một danh sách nhất định. Tuy nhiên, tôi không thể theo dõi nhiều thông tin cụ thể mà tôi cần phải thực hiện điều này, bao gồm:

  1. Làm cách nào để có danh sách tất cả các từ trong tệp từ hàm vim?
  2. Tôi có thể liệt kê các từ từ tất cả các bộ đệm (có tên tập tin), khi vim hoàn thành không?
  3. Làm cách nào để, ở chế độ chèn, nhận văn bản trong từ trước/sau con trỏ?
  4. Có thể hoàn thành thay thế toàn bộ từ và không chỉ lên đến con trỏ không?

Tôi đã ở đây trong vài giờ. Tôi tiếp tục đánh các đầu cụt, như this one, giới thiệu tôi với \% ​​# để phù hợp với vị trí con trỏ, điều này dường như không hiệu quả đối với tôi. Ví dụ: tìm kiếm \ w * \% # chỉ trả lại ký tự đầu tiên của từ tôi đang truy cập, bất kể tôi đang ở đâu trong đó. Các \% # dường như không neo.

+0

Không liên quan chặt chẽ, nhưng bạn có thể nhận được một số gợi ý từ câu trả lời [this] (http://stackoverflow.com/questions/6548541/camelcase-expansion-in-vim-like-intellij-idea/6550628#6550628). Có các hàm mẫu để tạo danh sách các từ từ tệp hiện tại và hàm hoàn thành tùy chỉnh. Tôi sẽ thử và đăng câu trả lời sau vào ngày hôm nay. –

+0

Liên kết của bạn trông thú vị và giàu dữ liệu. Tôi sẽ đào qua nó. Cảm ơn bạn đã giúp đỡ. –

Trả lời

0

Mặc dù nó không chính xác theo phương pháp mong muốn của bạn trong quá khứ tôi đã viết https://github.com/mjbrownie/swapit mà có thể thực hiện nhiệm vụ của bạn nếu bạn đang tìm kiếm các từ khóa liên quan. Nó sẽ rơi xuống trong kịch bản này nếu bạn có hàng trăm trận đấu.

Nó chủ yếu hữu ích cho 2-10 kết quả có thể được sắp xếp theo trình tự.

Bạn sẽ xác định một danh sách

: SwapList ảnh vui nhộn tạo ảnh vui nhộn MoreAwesome SuperCrazyAwesome FullyCompletelyAwesome UnbelievablyAwesome

và di chuyển qua các trận đấu với các phím incrementor decrementor (c + a) (c + x)

Có cũng là một vài loại trình cắm thêm kiểu đi xe đạp khác như các từ trao đổi mà tôi biết trên vim.org và github.

Lợi thế ở đây là bạn không phải nhóm các từ lại với nhau bằng regex.

+0

Cảm ơn bạn đã liên kết, Michael. Tôi sẽ phải xem qua nó. Bạn đã nhìn thấy những thứ hoàn thành từ điển đồng nghĩa với vim chưa? Tôi chạy vào nó ngày hôm nay trong tìm kiếm của tôi để giải quyết các vấn đề tôi liệt kê. Nó cho phép bạn xác định các từ liên quan, tôi nghĩ rằng trong một tập tin từ điển đồng loại, và sau đó kết hợp chúng thông qua các phím nóng thông thường /. –

+0

Tôi đã có nhưng không thực sự nghĩ đến việc sử dụng nó cho các thư viện mã. Ý tưởng tốt. Bạn vẫn có thể tìm thấy swapit hữu ích cho ad hoc refactoring, nơi nói rằng bạn đang đi qua một tập tin cài đặt và trao đổi SomeKeyword cho AnotherKeyword cho thấy một số nhưng không phải tất cả các từ khóa. Bạn chỉ cần thiết lập danh sách go/Keyword và đi (c + a) ... n ... n.n..n. (C + a) khi cần thiết mà không cần thêm danh sách vào tập tin. – michael

+0

Âm thanh như nó chắc chắn có thể giúp ích. Cảm ơn! –

0

Tôi đã viết một cái gì đó như thế năm trước khi làm việc với các thư viện của bên thứ ba với CamelCasePrefixes khá dài trong mọi chức năng khác nhau cho mỗi thành phần. Nhưng nó đã ở trong thời đại Before Git Hub và tôi coi nó là một viên ngọc bị mất, nhưng công cụ tìm kiếm nói rằng tôi không phải là một người hoàn toàn và đăng nó lên Vim wiki.

Ở đây là: http://vim.wikia.com/wiki/Custom_keyword_completion

Chỉ cần đừng hỏi tôi những gì 'MKW' phương tiện. Không ý kiến.

Điều này sẽ cần một số thích ứng với nhu cầu của bạn, vì nó chỉ tìm kiếm từ lên đến con trỏ, nhưng ý tưởng là ở đó. Nó chỉ hoạt động cho bộ đệm hiện tại. Lặp lại qua tất cả các bộ đệm sẽ chậm chạp vì nó không tạo ra bất kỳ chỉ mục nào. Đối với những mục đích tôi sẽ đi với grep bên ngoài.