লাইন ব্রেক inোকানো না করে ভিআইএম স্বতঃসিদ্ধ তালিকায় একটি আইটেম নির্বাচন করুন


22

ভীমের একটি বিরক্তিকর বৈশিষ্ট্যটি হ'ল যদি আপনি সন্নিবেশ মোডে থাকেন এবং একটি স্বতঃপূরণ (Ctrl-N) করেন, পছন্দসই আইটেমের নীচে তীরচিহ্নটি চাপুন এবং এন্টার কী টিপুন, তবে এটি আইটেমটি সন্নিবেশ করে তবে একটি নতুন লাইন সন্নিবেশ করে যা আপনি তারপরে মুছে ফেলতে হবে।

অতিরিক্ত অযাচিত নিউলাইন না পেয়ে স্বতঃপূরণ তালিকা থেকে কোনও আইটেম নির্বাচন করার কোনও উপায় আছে কি?


1
এটি আমার পক্ষে এটি কীভাবে কার্যকর হয় না ... আমি কিছু নির্বাচন করি, এন্টার টিপুন এবং কার্সারটি পরে একই লাইনে রয়েছে।
স্বর্ণলোক

উত্তর:


37

এটি নির্ভর করে আপনি কোন পপআপ মেনুতে আছেন (দেখুন :help popupmenu-completion)। আমি আপনার প্রশ্নটি থেকে বুঝতে পারি যে আপনি 2 রাজ্যে আছেন (যেহেতু আপনি একটি সম্পূর্ণতা পেতে তীরচিহ্নগুলি টিপ করেছেন)। যাইহোক, Enterরাষ্ট্র 2 এর জন্য ডিফল্ট আচরণটি নতুন লাইন ছাড়াই সম্পূর্ণতা সন্নিবেশ করা হয়; আপনি যা বর্ণনা করেন তা হ'ল রাষ্ট্র 1 এর আচরণ (যা আপনি যখন Ctrl+ N/ Ctrl+ ব্যবহার করেন P) is

সমস্ত রাজ্যে ধারাবাহিকভাবে কাজ করে এমন একটি উপায় হল Ctrl+ ব্যবহার করা Y। আমি ওয়াইকে "হ্যাঁ, এই শব্দটি গ্রহণ করুন" এর পক্ষে দাঁড়িয়ে মনে করতে চাই। আপনি জিডাউবিলিয়ার উত্তরের মতো জিনিসগুলি পুনরায় তৈরি না করে কেবল সম্পূর্ণ শব্দের পরে লেখাটি টাইপ করা শুরু করা সম্ভব।

একই প্রসঙ্গে আপনি মেনুটি বাতিল করার জন্য Ctrl+ টিপতে পারেন Eএবং আপনার পাঠ্যকে যেমন চালিত করার আগে করেছিলেন তেমন রেখে দিতে পারেন। আপনি যদি অন্য প্রসঙ্গে Ctrl+ Eএবং Ctrl+ এর জুড়ি ব্যবহার করতে অভ্যস্ত হন Y(যেমন, সাধারণ মোডে উপরে বা নীচে স্ক্রোল করা বা সন্নিবেশ মোডে কার্সারের নীচে বা উপরে অক্ষর সন্নিবেশ করানোর জন্য), এটি এখানে মনে রাখার এক উপায়। আমার ধারণা আপনি এটিকে "প্রস্থান" মেনু বা অনুরূপ হিসাবেও ভাবতে পারেন।

আরও :help popupmenu-keysজন্য দেখুন।


2
আহ হা, এটা বোঝা যায়। আমি ড্রপ ডাউনটি খুলতে Ctrl-N ব্যবহার করছি। আমি ড্রপ ডাউন নেভিগেট করতে তীরচিহ্নগুলি ব্যবহার করেছি। আমি জানি না যে আপনি ড্রপ ডাউন খুলতে তীর কীগুলি ব্যবহার করতে পারেন।
টাইলার ডারডেন

তীর কীগুলি ডিফল্ট কনফিগারেশনে ড্রপডাউন খুলতে পারে না। আমি যে পার্থক্যটি উল্লেখ করেছি তা হ'ল মেনুটি খোলার পরে নেভিগেট করা।
ইক্রিস্টোফারসন

কোনও কারণে যখন আমি <kbd> Ctrl </kbd> + <kbd> Y </kbd> দিয়ে এটি করার চেষ্টা করেছি তখন এটি লাইনটি ইন্টেন্টেড করেছে যা অনাকাঙ্ক্ষিত। কেন এমন ঘটবে তা নিয়ে কোনও চিন্তা?
এমপেসার

আমি এর মুখোমুখি হই নি। সম্ভবত এটি কোনও ইনডেন্ট সেটিং বা কোনও প্লাগইন যার কারণে আপনি ভুলে গেছেন due আমি ভিমের মেইলিং লিস্টে জিজ্ঞাসা করব: vim.org/maillist.php
ইক্রিস্টোফারসন

6

ব্যক্তিগতভাবে আমি এটি ব্যবহার করি:

inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"

যে কেউ সিআরটিএলপি প্লাগইন ব্যবহার করে সে এই ম্যাপিংটিকে সুবিধাজনক বলে মনে করতে পারে।


3

আমি জানি এটি পুরানো, তবে এক ধরণের পিগি গিডুবলিয়ার জবাবকে সমর্থন জানিয়েছে যেহেতু একাইস্টোফারসনের উত্তর তথ্যমূলক এবং দুর্দান্ত ছিল, যদি কেউ দ্রুত এবং নোংরা সমাধান চান:

inoremap <expr> <cr> ((pumvisible())?("\<C-y>"):("\<cr>"))

2

আপনার তীরচিহ্নগুলি ব্যবহারের বিকল্প হিসাবে, আপনার j& kকীগুলি স্বতঃপূরণ তালিকার মাধ্যমে স্ক্রোল করতে সক্ষম করুন ।

এটি করার ফলে আপনি স্ক্রোল করার সাথে সাথে নির্বাচিত শব্দের সাথে মেলে বর্তমান লাইনের পরিবর্তন ঘটে।

পরিবর্তিত শব্দের শেষে কার্সারটি এখনও সন্নিবেশ মোডে থাকায় আপনাকে এন্টার টিপতে হবে না।

এটি সক্ষম করতে এটি আপনার .vimrc এ যুক্ত করুন (স্ট্যাকওভারফ্লোতে অন্যকে ধন্যবাদ):

inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))

পৃথকভাবে, তীরচিহ্নগুলি ব্যবহার করার পরিবর্তে, আপনি কেবল পুনরাবৃত্তি করতে পারেন Ctrl-nযা অপশনগুলি ( Ctrl-pপিছনের দিকে যেতে) মাধ্যমে অভিশাপ দেবে এবং বর্তমান লাইনে এটি পরিবর্তনের সাথে সাথে পরিবর্তিত হবে, Enterকী ম্যাপিংয়ের প্রয়োজন নেই বা ভিম করবে না।


এই আচরণটি কিছুটা বিভ্রান্তিকর হতে পারে, যেহেতু এটি উভয়ই 1) সন্নিবেশ মোডে এবং 2) জে এবং কে এর ব্যাখ্যা করা যে কাজগুলি সন্নিবেশ মোডে না করে সেগুলি করার জন্য। বিশেষত, আপনি মেনু এন্ট্রি নির্বাচন করতে পারবেন না এবং তারপরে জে বা কে দিয়ে শুরু করা কোনও কিছু দিয়ে সরাসরি এটি অনুসরণ করুন।
ইক্রিস্টোফারসন

সম্মত, সে কারণেই আমি অন্য বিকল্পটি সরবরাহ করেছিলাম যদি এটি খুব দূরে এক ধাপ ছিল। ব্যক্তিগতভাবে, আমি তীরগুলি ব্যবহার করার জন্য আমার হাত সরানোর চেয়ে বিভ্রান্তিটিকে পছন্দ করব।
geedoubleya
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.