然後裝YCM不知道失敗幾次了QuQ
赫然發現 maralla/completor.vim
優點是不用另外編譯
而且也是非同步補全,不會讓vim卡死
C、C++我不知道為何可以正常使用沒出錯(?
但是Rust就一直不行
之前使用vim-racer也不行
推測是racer不支援cygwin的問題
主要原因可能是cygwin呼叫racer時若使用相對路徑則會發生找不到指定路徑
fork專案過來之後改個地方就解決了,就來記錄個OuO
首先這是沒有補全成功的模樣,並不會吐Error(這樣反而有些麻煩
先利用plugin的安裝機制獲得插件後進入修改
我因為fork過來了所以可以直接使用 Plugin 'aben20807/completor.vim'
(如果直接安裝我fork的就不用修改rust.py了
其他相關配置:
let g:completor_completion_delay=40 let g:completor_auto_close_doc=0 let g:completor_auto_trigger=1 let g:completor_min_chars=1 let g:completor_filesize_limit=4096 function! CompletorToggle() if g:completor_auto_trigger==0 let g:completor_auto_trigger=1 else let g:completor_auto_trigger=0 endif set noshowmode redraw echohl WarningMsg echo " ❖ completor ".((g:completor_auto_trigger==0)? "關閉": "開啟")." ❖ " echo "" echohl NONE set showmode endfunction inoremap <F7> <C-\><C-O>:call CompletorToggle()<CR> inoremap <expr> <TAB> pumvisible() ?"\<C-n>": "\<TAB>" inoremap <expr> <S-TAB> pumvisible() ?"\<C-p>": "\<S-TAB>"
然後我又去找了一下
其實設定racer.exe的位置並沒有用
let g:completor_racer_binary = '/path/to/racer' " not work QuQ(只有doc這樣寫,程式碼完全沒這東西OAO
估計是要將racer所在的bin設定成環境變數然後會自動抓取
就來修改囉
$ cd ~/.vim/bundle/completor.vim
修改rust.py
$ vim pythonx/completers/rust.py
在from completor.compat import to_bytes下方加入這兩行
import platform import os
接著找到prepare_request(self, action)函式
改成
def prepare_request(self, action): line, col = self.cursor is_cygwin = platform.system().find("CYGWIN") != -1 cmd = 'cygpath -a -w {}'.format(self.filename) cyg_filename = os.popen(cmd).read().strip().replace('\\', '\\\\') cmd = 'cygpath -a -w {}'.format(self.tempname) cyg_tempname = os.popen(cmd).read().strip().replace('\\', '\\\\') filename = cyg_filename if is_cygwin else quote(self.filename) tempname = cyg_tempname if is_cygwin else quote(self.tempname) return ' '.join([ACTION_MAP[action], str(line), str(col),filename, tempname])儲存後退出就完成了
可以自動補全囉
雖然功能還是略少但這樣就夠了OuO
其他截圖:
參考資料:
Fix being unable to find file with `racer daemon` on Windows. #64
“inconsistent use of tabs and spaces in indentation”
Does Python have a ternary conditional operator?
Python String find() Method
Check if running in Windows Command Prompt vs Cygwin python
How can I determine the URL that a local Git repository was originally cloned from?
cygpath -a -w
aben20807/completor.vim
沒有留言:
張貼留言