menu bật lên tùy chỉnh vim


7

Làm thế nào để tôi tạo một menu bật lên hoàn thành tùy chỉnh.

Tôi muốn có thể bắt đầu nhập một phần của chuỗi sau đó nhấn tổ hợp phím tùy chỉnh để hiển thị hoàn thành bật lên chỉ một nhóm chuỗi nhất định.

Tôi đã thiết lập xong omni và không muốn thêm vào danh sách đó.

Ví dụ: tôi có danh sách:
spo
spe
spa

Tôi muốn có thể nhập sp sau đó nhấn ctrl +> và có một hộp hoàn thành xuất hiện cho danh sách cụ thể đó.

Câu trả lời:


6
  inoremap <F5> <C-R>=ListMonths()<CR>

    func! ListMonths()
      call complete(col('.'), ['January', 'February', 'March',
            \ 'April', 'May', 'June', 'July', 'August', 'September',
            \ 'October', 'November', 'December'])
      return ''
    endfunc

Tìm thấy rồi! Bị giấu trong Grimoire mà họ đang cố nói với chúng tôi là docs =)

======================= Kịch bản cuối cùng của tôi là một cái gì đó như

inoremap <F5> <C-R>=CustomComplete()<CR>

        func! CustomComplete()
                echom 'move to start of last word'
                normal b
                echom 'select word under cursor'
                let b:word = expand('<cword>')
                echom '->'.b:word.'<-'
                echom 'save position'
                let b:position = col('.')
                echom '->'.b:position.'<-'
                normal e
                normal l
                echom 'move to end of word'     

                let b:list = ["spoogle","spangle","frizzle"]
                let b:matches = []


                echom 'begin checking for completion'
                for item in b:list
                echom 'checking '
                echom '->'.item.'<-'      
                        if(match(item,'^'.b:word)==0)
                        echom 'adding to matches'
                        echom '->'.item.'<-'      
                        call add(b:matches,item)
                        endif
                endfor
                call complete(b:position, b:matches)
                return ''
        endfunc

Tôi dám cho bạn tìm bất kỳ tài liệu nào đầy đủ như tài liệu Vim.
Thụy Sĩ

Vim là điên rồ. Hoàn toàn điên rồ những gì bạn có thể làm với nó.
James

4

Tạo một danh sách các từ: $HOME/wordlistvà thêm từ điển vào vim.

:set dictionary+=$HOME/wordlist

Kích hoạt danh sách từ:

:set complete-=k complete+=k

Bây giờ bạn có thể tự động hoàn thành các từ với <CTRL>-P<CTRL-N

Chỉnh sửa: Để có danh sách từ riêng biệt, bạn tạo nhiều danh sách, ví dụ:

$HOME/firstlist
$HOME/secondlist

và gán các ràng buộc chính để chọn một danh sách công việc cụ thể:

noremap <F5> :set dictionary=$HOME/firstlist<CR>:set complete-=k complete+=k<CR>
noremap <F6> :set dictionary=$HOME/secondlist<CR>:set complete-=k complete+=k<CR>

Điều này có lợi thế là bạn có thể sử dụng <CTRL>-Pvà các <CTRL>-Nphím tắt như bạn đã quen, một khi bạn chọn danh sách mong muốn.


Tôi có thể có từ điển riêng biệt mặc dù? Tôi muốn một phím nóng cho chỉ một danh sách cụ thể. Tôi đã sử dụng một từ điển.
James

@JamesAndino Tôi đã cập nhật câu trả lời của mình.
Marco
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.