Ctrl + A এবং Ctrl + Shift + A কীভাবে আলাদাভাবে মানচিত্র করবেন?


92

একটি টার্মিনালে, কেউ Ctrl+ Aএবং Ctrl+ Shift+ পার্থক্য করতে পারে না Aকারণ তারা উভয়ই একই কী কোডটি নির্গত করে, তাই আমি দেখতে পাচ্ছি কেন ভিম এটি করতে পারে না। তবে gVim, এক্স অ্যাপ্লিকেশন হওয়ায় Ctrl+ Aএবং Ctrl+ Shift+ পার্থক্য করতে পারে A। এই দুটি জিনিস আলাদাভাবে ম্যাপ করার কোনও উপায় আছে কি?

প্রারম্ভিকদের জন্য, আমি নিম্নলিখিতগুলির মতো কিছু করতে চাই: Ctrl+ Vভিজ্যুয়াল মোডে রেখে, জিনোম টার্মিনালের মতো "ক্লিপবোর্ড থেকে পেস্ট করুন" কাজ করুন।

:nmap <C-S-V> "+gP


4
@vivoconunxino এই লিঙ্কটি সিটিআরএল-এ একটি শিফট পরিবর্তনকারী যুক্ত করার কোনও উল্লেখ করে না।
ধুসর

উত্তর:


47

জিভিম এটি করে না কারণ ভিম এটি করতে পারে না (সাধারণ পরিস্থিতিতে)। দুঃখিত, তবে ঠিক এটিই।


যাহোক...

কিছু টার্মিনাল (উদাহরণস্বরূপ, xterm এবং iterm2) কীগুলির সংমিশ্রনের জন্য একটি নির্বিচারে পালানোর ক্রমটি প্রেরণে কনফিগার করা যেতে পারে।

উদাহরণস্বরূপ, .Xresourcesএক্সটার্মের জন্য প্রেরণের <Esc>[65;5uজন্য নিম্নলিখিতগুলিতে যুক্ত করুন CtrlShiftA। তারপরে আপনি এটি ভিমে ম্যাপ করতে পারেন <C-S-a>। (65৫ হল শিফট-এ-এর দশমিক ইউনিকোড মান এবং 5 টি সিটিআরএল সংশোধকের জন্য বিট this এক্ষেত্রে আপনি "ইউনিকোড" for

! .Xresources
XTerm*vt100.translations: #override Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u")

এটি করার জন্য আইটার্ম এবং [u] আরএক্সভিটিও কনফিগার করা যায় (উদাহরণগুলি সরবরাহ করা হয়নি)।

আরও তথ্য: http://www.leonerd.org.uk/hacks/fixterms/


একাধিক কী পুনরায় তৈরি করতে, এই দস্তাবেজটি দেখুন : এর সাথে কী এন্ট্রি পৃথক করুন \n। লাইনগুলি বিভক্ত করতে ব্যাকস্ল্যাশ ব্যবহার করুন। উদাহরণস্বরূপ <kbd> সিএসবি </ কেবিডি> এবং <কেবিডি> সিএসএফ </ XTerm*vt100.translations: #override Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")
কেবিডি

সম্পূর্ণতার জন্য, সম্ভবত উত্তরে যুক্ত করুন কীভাবে এটি vi তে ম্যাপ করবেন? উদাহরণস্বরূপ map <ESC>[66;5u :echo "ctrl-shift-b received"<CR>লাইনে একটি বার্তা প্রিন্ট করতে ctrl-shift-b মানচিত্রে। আসকউবুন্টুতে একই ধরণের প্রশ্ন ছিল এবং আমি এটি সংক্ষেপে জানিয়েছি
সিএফআই

আমাদের যা দরকার তা হল একটি নতুন টার্মিনাল স্পেসিফিকেশন! xterm-256color(অতি সাম্প্রতিক) এত সীমাবদ্ধতার মধ্যে ভুগছে।
Jôrôme Pouiller

@ জেজ এই সীমাবদ্ধতাগুলি টার্মক্যাপের সাথেই রয়েছে, এর জন্য টার্মক্যাপ ফাইল নয় xterm-256color
ধুসর

@ গ্রেভো অবশ্যই, টার্মক্যাপে নতুন বৈশিষ্ট্যগুলি প্রয়োজনীয় হবে
জেরুমে পুইলার

9

ইতিমধ্যে নির্দেশিত হিসাবে, এর <C-S-A>থেকে আলাদাভাবে মানচিত্রের কোনও উপায় নেই <C-A>

তবে, autokey(লিনাক্স এবং উইন্ডোগুলির জন্য) বা autohotkey(উইন্ডোজগুলির জন্য ) সরঞ্জামগুলি ব্যবহার করে , আপনি <C-S-A>নির্দিষ্ট অ্যাপ্লিকেশনের জন্য আলাদা কী-স্ট্রোক (গুলি) প্রেরণ করতে পুনরায় তৈরি করতে পারেন ।

উদাহরণস্বরূপ আমার সিস্টেমে আমার এই সেটিংটি রয়েছে autokey:

$ cat ~/.config/autokey/data/gnome-terminal/ctrlshifta-gnome-terminal.py
#ctrl+shift+a sends '<S-F1>a'
keyboard.send_keys("<shift>+<f1>a") # Note that `f` in `f1` needs to be in lower case.

এটি এই বৈশিষ্ট্য বরাদ্দ করুন:

  1. কীবোর্ড-শর্টকাট হিসাবে ctrl+shift+a
  2. উইন্ডো ক্লাস: gnome-terminal-server.Gnome-terminal

তারপরে আপনার যা ইচ্ছা তা করার ~/.vimrcজন্য ম্যাপিং তৈরি <S-F1>aকরতে পারেন।


মন্তব্য:

  1. আমি <S-F1>সনাক্তকরণের জন্য একধরণের লিডার কী হিসাবে ব্যবহার করেছি <C-S>। এটি ছিল কারণ আমার টার্মিনাল <F13>- <F37>ইত্যাদি কী গ্রহণ করে নি । যদি আপনার অ্যাপ্লিকেশন এটি সমর্থন করে, ( gvimকী আমি মনে করি) এই কীগুলি ব্যবহার করার পরামর্শ দেওয়া হয়।
  2. আমি প্রধানত vimমধ্যে gnome-terminal। সুতরাং আমি window class = gnome-terminal-server.Gnome-terminalফিল্টার হিসাবে ব্যবহার । gvimআপনি চান তা ব্যবহার করতে এটি পরিবর্তন করুন । autokeyশ্রেণি / শিরোনামের মতো অন্য কোনও উইন্ডোর বৈশিষ্ট্য ক্যাপচারের জন্য একটি বোতাম সমর্থন করে।

ধন্যবাদ গাদা. কী রিম্যাপিংয়ের জন্য অটোকি ব্যবহার সম্পর্কে প্রচুর পরিমাণে জিনিস রয়েছে তবে এটি কীভাবে করবেন তার কোনও প্রকৃত নির্দেশ নেই। শেষ পর্যন্ত আপনার উত্তর তা করে। আমি বিশ্বাস করতে পারি না অন্য কেউ আপনাকে উজ্জীবিত করেছে।
pickle323

4
Godশ্বরের অভিশাপ! আমি যা করতে পেরেছিলাম সব করেছি কিন্তু আমি এটি আমার উবুন্টু 16.04 এ ইনস্টল করতে পারি নি।
ইউকশিমা হুকসে

apt install autokey-gtk?
আনিসনে

4
অতিরিক্ত সফ্টওয়্যার ইনস্টল করার আগে আপনি আপনার উইন্ডো ম্যানেজারটি সরাসরি এটি পরিচালনা করে কিনা তা পরীক্ষা করে দেখতে পারেন। উদাহরণস্বরূপ, i3 আমার .config এই আছে: bindsym --release Control+Shift+h exec --no-startup-id xdotool key --clearmodifiers comma w m hযা ছাপাখানা ,wmhযখন আমি চাপুন <C-S-h>, এবং তারপর তেজ জানেন কিভাবে হ্যান্ডেল করতে,wmh
MatrixManAtYrService

^^ এটিও ভাল। যাইহোক, আমি কী-অনুবাদটি কেবল জিনোম-টার্মিনাল বা জিভিমে সীমাবদ্ধ করতে চেয়েছিলাম। অন্যান্য অ্যাপ্লিকেশন নয়। <C-S-H>আমি যখন এটি টিপব তখন অন্যান্য অ্যাপ্লিকেশনগুলি গ্রহণ করা চালিয়ে যাওয়া উচিত ।
আনিসনে

5

যদি আপনি বিদ্যমান সিভি কার্যকারিতাটি হারাতে চান তবে আপনি তার পরিবর্তে সিকিউ ব্যবহার করতে পারেন। দেখুন,: CTRL-V- বিকল্পে সহায়তা করুন।


3

নিওভিম এখন এর টার্মিনাল এবং গুই ক্লায়েন্ট উভয়ের জন্য এই কার্যকারিতাটি সরবরাহ করে। দেখুন : এইচ এনভিম-ফিচারস-নতুন


4
আপনার টার্মিনালে সিএসআই কোডগুলি সক্ষম না করা পর্যন্ত যথেষ্ট নয়। বক্সের বাইরে নিওভিম যে সিটিআরএল-শিফট রূপগুলি সমর্থন করে তা হ'ল বেশিরভাগ মুদ্রিত -অক্ষর নয় ( উদাহরণস্বরূপ neovim.org/doc/user/vim_diff.html#nvim-features-newতালিকাভুক্ত )। যাইহোক, মেটা কর্ডগুলি (তত্সহ <m-s-...>রূপগুলো) না বেশিরভাগ বাক্সের বাইরে সম্পূর্ণরূপে কাজ করি।
জাস্টিন এম কেজ

এই দস্তাবেজটি বলে ALT (|META|) chords always work (even in the |TUI|). Map |<M-| with any key: <M-1>, <M-BS>, <M-Del>, <M-Ins>, <M-/>, <M-\>, <M-Space>, <M-Enter>, etc. Case-sensitive: <M-a> and <M-A> are two different keycodes.যে "কেস-সংবেদনশীল:" অংশের আগে একটি লাইন ব্রেক রয়েছে, এটি এই অস্পষ্ট করে তোলে। সংশোধন করার জন্য ধন্যবাদ, @ জাস্টিনএম.কিজ। এছাড়াও, ভিএম 8.1 এর মধ্যে <M-a>এবং <M-A>পাশাপাশি পার্থক্য দেখা যায়।
অ্যাডাম কাটজ

@ জাস্টিন-এম-কেজগুলি কোনও অতিরিক্ত ঝামেলা ছাড়াই <c-s-l>সম্পূর্ণরূপে পৃথক করা <c-l>হয়েছেKonsole
স্লাভা

3

অভ্যন্তরীণভাবে কীবোর্ডের ইনপুটটি যেভাবে পরিচালিত হয় তার কারণে, দুর্ভাগ্যক্রমে এটি আজ সাধারণভাবে সম্ভব নয়, এমনকি জিভিআইএম-এও সম্ভব নয়। কিছু মূল সংমিশ্রণ, যেমন Ctrl+ নন-বর্ণমালা ম্যাপ করা যায় না এবং Ctrl+ বর্ণ বনাম Ctrl+ Shift+ বর্ণকে আলাদা করা যায় না। (যদি না আপনার টার্মিনাল এটির জন্য একটি স্বতন্ত্র টার্মক্যাপ কোড প্রেরণ করে, যা সর্বাধিক হয় না)) সন্নিবেশ বা কমান্ড-লাইন মোডে কী সংমিশ্রণটি টাইপ করার চেষ্টা করুন। যদি কিছু না ঘটে / isোকানো হয় তবে আপনি সেই কী সংমিশ্রণটি ব্যবহার করতে পারবেন না। এটি <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>ইত্যাদি ক্ষেত্রেও প্রযোজ্য (কেবল ব্যতিক্রমটি <BS>/ <C-H>।) এটি একটি পরিচিত ব্যথা পয়েন্ট এবং ভিম_দেব এবং #vim আইআরসি চ্যানেল সম্পর্কিত বিভিন্ন আলোচনার বিষয়।

কিছু লোক (সর্বাগ্রে পল লিওনার্ড ইভান্স) এটি ঠিক করতে চায় (এমনকি এটি সমর্থনকারী টার্মিনালগুলিতে কনসোল ভিমের জন্যও), এবং বিভিন্ন প্রস্তাব দিয়েছে, সি.পি. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

তবে আজকের দিনে, কোনও প্যাচ বা স্বেচ্ছাসেবক এখনও এগিয়ে আসেনি, যদিও অনেকে ভবিষ্যতের ভিম রিলিজে এটি করার ইচ্ছা প্রকাশ করেছেন।


1

আপনি যেমন উল্লেখ করেছেন, আপনি একই কীকোড পাবেন। সুতরাং তাদের পার্থক্য করার একমাত্র উপায় হ'ল Shiftআপনার ইভেন্ট হ্যান্ডলিংয়ের কার্যক্রমে কীটির স্থিতি পরীক্ষা করা । অবশ্যই, যদি আপনার কীপ্রেস এবং প্রসেসিংয়ের মধ্যে 0.5 সেকেন্ডের বেশি বিলম্ব হয় তবে আপনি কিছু হিট মিস করবেন।


4
আমার অনুমানের মূল বক্তব্যটি হ'ল যে gvim এইরকম পার্থক্য তৈরি করতে সক্ষম (যদিও সাদামাটা ভিম নাও পারে), সেখানে কি কোন জিভিআইএম-নির্দিষ্ট এক্সটেনশন রয়েছে যা আমি Ctrl + Shift + V বনাম Ctrl + V এর উপর নির্ভর করতে পারি? ।
কোহসুক কাওয়াগুচি

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