আপনি কীভাবে স্বয়ংক্রিয়ভাবে ভিমে স্বয়ংক্রিয়তার পূর্বে পূর্বরূপ উইন্ডোটি সরিয়ে ফেলবেন?


92

আমি ব্যবহার করছি omnifunc=pythoncomplete। কোনও শব্দের স্বয়ংক্রিয়ভাবে পূর্ণ করা (যেমন, os.<something>), আমি প্রত্যাশার মতো যোগ্য শ্রেণীর সদস্য এবং ফাংশনগুলির তালিকা এবং সেই সাথে নির্বাচিত সদস্য বা ফাংশন সম্পর্কিত নথি সহ একটি স্ক্র্যাচ বাফার প্রিভিউ উইন্ডোটি পাই। এটি দুর্দান্ত, তবে আমি যে ফাংশনটি চাই তা নির্বাচন করার পরে, পূর্বরূপ উইন্ডোটি থেকে যায়।

আমি এটি থেকে মুক্তি পেতে পারি :pc, তবে আমি আমার ফাংশনটি, একটি লা গ্রহণ নির্বাচন করার পরে এটি স্বয়ংক্রিয়ভাবে অদৃশ্য হয়ে যেতে চাই like আমি প্রায় খেলেছি completeoptকিন্তু কোন ফল হয় নি।


8
ভাল প্রশ্ন - আমি সর্ব-অসম্পূর্ণ ব্যবহার বন্ধ করে দিয়েছি কারণ এটি বোকা বাফারটি উন্মুক্ত রেখে দিয়েছে।
ওয়েইন ওয়ার্নার

উত্তর:


106

নিম্নলিখিতগুলি আপনার ভিআরসিআরিতে রাখুন:

" If you prefer the Omni-Completion tip window to close when a selection is
" made, these lines close it on movement in insert mode or when leaving
" insert mode
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif

4
এটি আমার (q: বা q /) কমান্ড সম্পাদনা উইন্ডোটি ভঙ্গ করে বলে মনে হচ্ছে। আমি অন্য চেক যুক্ত করেছি: && বুফনাম ("%")! = "[কমান্ড লাইন]" উভয় লাইনে
বেন

4
@ বেন: ওহ, এই প্রশ্নটি পোস্ট করার আগে আপনার মন্তব্যটি আমি কীভাবে দেখিনি । সেখান থেকে যে উত্তর পেয়েছি তা হল বদলে pcloseযাওয়া silent! pclose
ইডব্রি

4
উভয় গেজেনেস এবং পাইডাভকে ধন্যবাদ। আপনার কৌশলগুলি পুরোপুরি কার্যকর!
লুবুলোস

75

যদিও ইতিমধ্যে স্বীকৃত উত্তর রয়েছে তবে আমি ডক্স থেকে এটি সরাসরি পেয়েছি যা এই সমস্যাটির যে কোনও প্লাগইনের জন্য কাজ করবে।

autocmd CompleteDone * pclose

15
CompleteDoneসংস্করণ 7.4 যোগ করা হয়েছে। এই পদ্ধতির CursorMovedI/ InsertLeaveপদ্ধতির চেয়ে বেশি পছন্দ করা উচিত ।
পিটার রিঙ্কার

7
@ পিটারআরঙ্কার আমি উইন্ডোটি সমাপ্ত না হওয়া বন্ধ করতে পছন্দ করি (কারণ আমি যুক্তিগুলি টাইপ করার সাথে সাথে ডকুমেন্টেশন দেখতে চাই), তাই আমি InsertLeaveলাইনটি ব্যবহার করব ।
DBedrenko

এটি আশ্চর্যজনক :)
মাহদী মেহরবী

19

আপনার যদি সুপারটিব প্লাগইন ইনস্টল করা থাকে তবে সেখানে একটি বিকল্প বলা হয় supertab-closepreviewonpopupclose

আপনার .vimrc এ নিম্নলিখিতটি রাখুন:

let g:SuperTabClosePreviewOnPopupClose = 1

16
আমি এই উত্তরটিকে উঁচু করে তুলেছি কারণ এটি ইঙ্গিত দেয় যে YouCompleteMe প্লাগইনটিতে ag: ycm_autoclose_preview_window_ after_insertion বিকল্প রয়েছে।
দুলিশি

@ আদলেশি ঠিক কী খুঁজছিলাম!
অ্যান্ডি হেডেন

@ অ্যান্ডি হেডেন খুশি আমি সাহায্য করতে পারি! এটাই আমি মন্তব্য রেখেছি!
দুলেশি

আপনাকে ধন্যবাদ @ আদলেশি ঠিক আমারও এটির প্রয়োজন ছিল!
ডেভিড উডস

9

কীভাবে এটি স্বয়ংক্রিয়ভাবে বন্ধ করা যায় তা আমি জানি না, তবে আপনি টাইপ করতে পারেন

: pclose

স্ক্র্যাচ পূর্বরূপটি ম্যানুয়ালি বন্ধ করতে।


1

পূর্বরূপ উইন্ডোটি বন্ধ করার জন্য নির্দিষ্ট কীগুলি চেষ্টা করার জন্য আপনি নিম্নলিখিত ম্যাপিংগুলিতে ফেলে দিতে পারেন।

inoremap <space> <C-O>:wincmd z<CR><space>
inoremap ( <C-O>:wincmd z<CR>(
inoremap ) <C-O>:wincmd z<CR>)
inoremap , <C-O>:wincmd z<CR>,
inoremap <CR> <C-O>:wincmd z<CR><CR>
inoremap <esc> <esc>:wincmd z<CR>

আপনি যখন সন্নিবেশ মোডটি শেষ করেন তখন প্রাকদর্শন উইন্ডোটি বন্ধ করতে আপনি স্বতঃসমানু ব্যবহার করতে পারেন:

augroup GoAwayPreviewWindow
autocmd! InsertLeave * wincmd z
augroup end

1

আমি জানি এই প্রশ্নটি অনেক পুরানো, তবে "পরিষ্কার" সমাধানের সন্ধানের কয়েক দিন পরে আমি সবেমাত্র কমপ্লিটডোন স্বতঃশক্তি পেয়েছি যা কাজটি করে:

au CompleteDone * pclose

0

আপনি এটি টাইপ করতে পারেন .vimrc:

set completeopt-=preview

কউ আপনি দয়া করে আরও ব্যাখ্যা যত্ন?
ওয়াটওয়ার

4
এটি আসলে প্রশ্নের উত্তর দেয় না, এটি পূর্বরূপ উইন্ডোটিকে সর্বদা পপআপ করা থেকে শেষ করে, সমাপ্তির পরে বরখাস্ত করে না। নোট করুন যে ওপি বলেছিল যে তারা "সম্পূর্ণলিপিটি" চেষ্টা করেছিল।
নারদওয়ালার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.