ভিমে বিভিন্ন কীবোর্ডের সাথে কাজ করার সবচেয়ে সুবিধাজনক উপায় কী?


19

আমার মাঝে মাঝে গ্রীক শব্দ লিখতে হবে তবে আমি যখন গ্রীক কীবোর্ডটি ব্যবহার করছি তখন হিট, বলুন, আমি যে আদেশ দিচ্ছি তা হিসাবে <C-p>বোঝা যাবে <C-π>। এটি দিয়ে স্থির করা যায় :map <C-p> <C-π>। আমি কি সমস্ত তালিকা তৈরি না করে সমস্ত অক্ষরের জন্য এটি করতে পারি?

পুনশ্চ. সবার তালিকা তৈরি করা একটি নিখুঁত ফলাফল দেয় না। যেমন, qহয় ;Gr উপর। কীবোর্ড, কিন্তু আমরা মানচিত্র করতে চাই না; to q। এছাড়াও, কোনও কারণে, ΖΖ (জিতা জিতা) পরে কাজ করে না :map Ζ Z। এবং একটি আদেশ আমি সংজ্ঞায়িত করেছি, \lwহিসাবে কাজ করে না \λς


2
আমি মনে করি যে ম্যাপিংটি যাওয়ার ভাল উপায় নয়: সম্ভবত আপনি যা খুঁজছেন সেটি langmapবিকল্প ( দস্তাবেজটি দেখুন যা গ্রীক বিন্যাসের জন্য একটি উদাহরণ অন্তর্ভুক্ত করেছে)। এই বিকল্পটি আসলে গ্রীক বা সিরিলিকের মতো ল্যাটিন কীবোর্ডগুলি মোকাবেলায় সহায়তা করার জন্য তৈরি হয়েছিল। এটি আপনাকে জোড়া জোড়া চিহ্ন সংজ্ঞায়িত করার অনুমতি দেয় যা সন্নিবেশ মোডে সাধারণত ব্যাখ্যা করা হবে তবে অন্যান্য মোডে প্রতিস্থাপন করা হবে, সম্ভবত এটি আপনাকে সহায়তা করবে।
স্ট্যাটক্স

@ স্টাটক্স: ধন্যবাদ! আমি প্রাক্তন ব্যবহার করার চেষ্টা করেছি। কিন্তু কিছুই ঘটলো না. সহায়তা বলছে যে ভিমকে + ল্যাংম্যাপ বিকল্পটি মেনে চলতে হয়েছিল। এটি ছিল কিনা তা পরীক্ষা করার কোনও সহজ উপায় আছে? আমি ম্যাক ওএসের সাথে আসা সংস্করণটি ব্যবহার করছি।
টুথরট

1
আপনি ব্যবহার করতে পারেন :echo has('langmap')যদি আপনি একটি পেতে 1যদি আপনি এটি আছে আপনি একটি পেতে 0আপনি না।
স্ট্যাটক্স

@ স্টাটক্স: ধন্যবাদ! আমি আপডেট করেছি brew install vim --override-system-viএবং :echo has &cএখন ফিরে আসছি 1. জেডজেড কাজ করে। \lv& সি নিয়ে সমস্যা থেকেই যায়।
টুথরট

আমি :echo has &cঅংশটি বুঝতে পারি না , আমি langmapএকবার ভিমে সংকলন করার পরে আপনার ভিআইআরসিআর langmapসাথে ম্যাপিংগুলি নির্দিষ্ট করতে হবে তার সাথে এটি সম্পর্কিত কী তা আমি দেখতে পাচ্ছি না :set langmap=ΑA,ΒB,ΨC [...]
স্ট্যাটক্স

উত্তর:


6

আমি সুপারিশ করব keymap, যা আপনার সমস্যার সমাধান করতে পারে। এগুলি আপনার ভিএমআরসি-তে রাখুন

" set keymap=greek_utf-8
set iminsert=0
set imsearch=-1

নিষ্ক্রিয় গ্রিক হিসাবে একটি default.You (গ্রিক) এবং বন্ধ (ইংরেজি) বিকল্প টগল করতে পারেন ব্যবহার করে <ctrl>+^(আপনি ব্যবহার করতে পারেন <ctrl>+6, এটা কী ম্যাপ করা হয় প্রতীক নয়) সন্নিবেশ মোডে এবং মোড প্রতিস্থাপন (কাজ করে না স্বাভাবিক অবস্থা). সন্নিবেশ মোড রেখে যাওয়ার সময় স্বয়ংক্রিয়ভাবে অক্ষম করতে আপনি ব্যবহার করতে পারেন

inoremap <ESC> <ESC>:set iminsert=0<CR>

এগুলি সম্পর্কে আরও

:h iminsert :h keymap :h imsearch :h i_CTRL-^


দ্বিতীয় মন্তব্য এডিট করুন:

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

augroup Greek
    au InsertEnter * set iminsert=1
    au InsertLeave * set iminsert=0
augroup END

পলিটোনিক গ্রীক ব্যবহার করা কি আসলেই প্রয়োজনীয়? আমার কাছে মনে হয় যে কেবল ডান এনকোডিং প্রয়োজন, এবং তারপরে বিল্ট-ইন MacOS এক্স ইনপুট ব্যবহার করতে। তবে এটি সম্ভবত আমার ভুল ধারণা। আপনি ম্যাকওএস এক্স-তে পলিটোনিক গ্রীক কীবোর্ডেও স্যুইচ করতে পারেন (এবং এটি শিখুন তবে আমি অনুমান করি যে এটি যা আপনি খুঁজছেন তা নয় :-) ἀ এর পিছনে কিছু ম্যাপিং হতে পারে, এটি খুঁজে বের করার চেষ্টা করুন :map >aএবং যদি সেখানে থাকে তবে , এটিকে আনম্যাপ করুন :unmap >a। গ্রীকবিহীন এবং নন-ম্যাকও ব্যবহারকারী হিসাবে আমি ইতিমধ্যে আমার উদ্দীপনা শেষ করছি। দুঃখিত এবং শুভকামনা!
রুইচিরো

10

আমি মন্তব্যগুলিতে যেমন বলেছি, ম্যাপিংগুলি আপনাকে যা করতে চায় তা করার জন্য ডিজাইন করা হয়নি। এই ব্যবহারের ক্ষেত্রে একটি আকর্ষণীয় বিকল্প হ'ল langmap

এই বিকল্পটি আচরণ বা আপনার কীবোর্ডকে সন্নিবেশ মোডে রাখতে এবং অন্যান্য মোডে এর আচরণটি পরিবর্তন করতে দেয়।

এটি ব্যবহার করতে ভিমকে সংকলন করতে হবে +langmap, আপনি পরীক্ষা করতে পারেন যে এই বিকল্পটি সক্ষম হয়েছে echo has('langmap'): কমান্ডটি যদি 1বিকল্পটি সক্ষম করে থাকে তবে আপনাকে এই বিকল্পটি সক্ষম করার সাথে একটি সেটআপ পেতে হবে (এটি কীভাবে করতে হয় তা জানতে, এটি) অন্য প্রশ্ন)।

এটি সক্ষম করা হলে, বিকল্পটি জোড়া অক্ষরের উদাহরণস্বরূপ উদাহরণস্বরূপ set langmap += à@আপনি àযখন সন্নিবেশ মোডে থাকবেন তখন আপনাকে আপনার বাফারে একটি যুক্ত করতে দেবে এবং আপনি একটি àটাইপ àকরেন তবে স্বাভাবিক মোডে টাইপ করা আসলে একটি ট্রিগার করবে @(এই উদাহরণটি অ্যাজার্টিতে কার্যকর হতে পারে) ম্যাক্রোগুলির সাহায্যে কীবোর্ডগুলি সহজ করার জন্য)।

গ্রীক ভাষায় ল্যাঙ্কম্যাপ ব্যবহার করতে :h 'langmap'আপনি আপনার এই লাইনটি যুক্ত করার ক্ষেত্রে প্রদত্ত উদাহরণটি অনুসরণ করতে পারেন vimrc (এখান থেকে এই লাইনটি অনুলিপি করা ভাল ধারণা নাও যেহেতু আমি সত্যই এনকোডিংয়ের বিষয়ে নিশ্চিত নই , সাহায্যের ফাইল থেকে সরাসরি লাইনটি ঝাঁকিয়ে দেওয়া সম্ভবত নিরাপদ) :

:set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz

আপনার মন্তব্যগুলিতে আমি যা বুঝি সেগুলি থেকে আপনি যখন পূর্বনির্ধারিত কমান্ডগুলি ব্যবহার করার চেষ্টা করবেন তখন এটি একটি ইস্যু থেকে যায়: আপনি যখন কোনও কমান্ড টাইপ করেন, ল্যান্টম্যাপ সংজ্ঞায়িত আচরণের পরিবর্তে সন্নিবেশ মোডের আচরণটি ট্রিগার করা হবে। দুর্ভাগ্যক্রমে আমি নিশ্চিত নই যে এর জন্য আমার একটি ভাল সমাধান আছে। একটি ধারণা হ'ল কমান্ডগুলির নতুন সংজ্ঞা দেওয়া যেমন:

command λς lw

আপনি যখন কমান্ডটি টাইপ করবেন তখন এই পদ্ধতিটি λςকার্যকর করা হবে lwতবে আমি এই পদ্ধতিতে বেশ কয়েকটি ত্রুটি দেখতে পাচ্ছি:

  • আপনি যে সমস্ত কমান্ড ব্যবহার করতে চান তা পুনরায় সংজ্ঞায়িত করতে বাটটিতে একটি বিশাল ব্যথা হতে পারে।
  • ব্যবহারকারী-সংজ্ঞায়িত কমান্ডগুলির একটি মূল অক্ষর দিয়ে শুরু করতে হবে এবং গ্রীক ভাষায় এটি করা কতটা সুবিধাজনক তা এখন আমার ধারণা idea

সুতরাং সম্ভবত এই প্রশ্নের উত্তরে @ আলেকজান্ডার মাইশভ প্রস্তাবিত একটি প্লাগইন কার্যকর হতে পারে (কারণ আমি এগুলির কোনওটিই চেষ্টা করেছিলাম না তবে আমি জানি না তারা সমস্যাটি সমাধান করেছেন কিনা তবে মনে হয় তারা তা করেন)।


1

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

আমি আমার ওএসের সিস্টেম কীবোর্ড সুইচ ব্যবহার করে স্যুইচ করতাম। ওপি হিসাবে উল্লেখ করা হয়েছে যে এটির সাথে সমস্যাটি হ'ল এটি সম্পূর্ণ কমান্ডগুলি ভেঙে দেয়, যেহেতু সাধারণ মোডে, প্রতিটি কী অ-ইংরাজী কীবোর্ডের সাহায্যে ভিমে আরও একটি সংকেত প্রেরণ করে। সুইডিশ কীবোর্ড লেআউট ইন, পরন্তু, অ বর্ণানুক্রমিক অক্ষর আভা নতুন অক্ষরের জন্য পথ পরিষ্কার করা করার জন্য অনুপ্রাণিত হই å, äএবং ö। উদাহরণস্বরূপ, }আল্ট-শিফট -9 ( ইংলিশ কীবোর্ডের খোলার প্রথম বন্ধনীর সাথে মেলা ) টাইপ করা হয়েছে এবং ব্যাকস্ল্যাশটি আল্ট-শিফট -7 টাইপ করা হয়েছে। সন্নিবেশমোডের জন্য একটি ভ্যানিলা সুইডিশ কীবোর্ড বিন্যাসে স্যুইচিংয়ের ফলে পুরো মাথা ব্যাথার কারণ হয়।

আমার সমাধানটি ছিল কেবল ইনসার্টমোডে প্রাসঙ্গিক কীগুলি পুনরায় তৈরি করা এবং কোনও ফাংশনে এই ম্যাপিংগুলি মোড়ানো ছিল যাতে আমি সহজেই পিছনে পিছনে স্যুইচ করতে পারি। নিচের কোড আমি আমার এই করেছিল .vimrc। এটি কেবলমাত্র সুইডিশ কীবোর্ড বিন্যাসে আমার অবস্থানগুলিতে প্রয়োজনীয় সমস্ত অক্ষর যুক্ত করে, সমস্ত কিছু রেখে। কিছু অক্ষর আছে যা তাদের দ্বারা ছদ্মবেশী হয় টাইপ করার জন্য ( ;, :, [, {, ", এবং '), আমি কেবল কী দুইবার টিপুন। ভাগ্যক্রমে, কেবল নিরীহ লোকদের এমনকি দুটি টাইপ করা প্রয়োজনäএক সারিতে। (যদি এই দ্বিগুণ হিটটি উপযুক্ত না হয় তবে আপনি সেগুলি সিটিআরএল বা এর মতো অন্য কিছুতে মানচিত্র করতে পারেন The তাদের ঘোরাফেরা করার চেয়ে বেশি।) এর অর্থ হ'ল আমি যখন সুইডিশ টাইপ করতে চাই, তখন আমি আঘাত করি <Leader>s, যা এই ম্যাপিংগুলিতে স্যুইচ করে সুইডিশ বানান পরীক্ষা করে apply ফিরে স্যুইচ করতে আমি করি <Leader>e

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

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

" Switch to Swedish
function! SweType()
  set spelllang=sv
  inoremap ; ö
  inoremap ;; ;
  inoremap : Ö
  inoremap :: :
  inoremap [ å
  inoremap { Å
  inoremap ' ä
  inoremap '' '
  inoremap " Ä
  inoremap "" "
  inoremap [[ [
  inoremap {{ {
endfunction
nmap <Leader>s :<C-U>call SweType()<CR>


" Switch to English
function! EngType()
  set spelllang=en_us
  inoremap ; ;
  iunmap ;;
  inoremap : :
  iunmap ::
  inoremap [ [
  iunmap [[
  inoremap { {
  iunmap {{
  inoremap ' '
  iunmap ''
  inoremap " "
  iunmap ""
endfunction
nmap <Leader>e :<C-U>call EngType()<CR>

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

@ স্টাটক্স ওয়েল, আমি হয়ত প্রশ্নটি ভুল বুঝে থাকতে পারি, তবে সমস্যাটি যদি নরমালমড ফাংশনগুলি বজায় রেখে সহজেই ইনসার্টমোডে অ-ইংরেজি অক্ষরগুলি সন্নিবেশ করানো হয় তবে আমি বিশ্বাস করি যে আমার প্রশ্নটি অন্তত সেই সমস্যাটির সমাধান করার চেষ্টা করবে।
Andreas

আমি দুঃখিত, আমি আপত্তিজনক বোঝাতে চাইনি: আমি ইঙ্গিত করছিলাম যে প্রশ্ন এবং আপনার উত্তরের মধ্যে একটি ব্যবধান থাকতে পারে তবে অবশ্যই আপনি সমস্যার সমাধান করার চেষ্টা করেছেন এবং আমি যেমন বলেছি যে আমি কার্যকরীভাবে সক্ষম করার ধারণাটি পছন্দ করি এবং ম্যাপিংগুলি অক্ষম করে। আমি সত্যিই আপনার উত্তর অস্বীকার করছিলাম না এবং আমি এটির মতোই শুনেছি তার জন্য আমি দুঃখিত sorry
স্ট্যাটক্স

1
@ স্ট্যাটক্স কোনও অপরাধ নেওয়া হয়নি। এবং আপনি যদি আমার উত্তরটিকে অস্বীকার করেন তবে তা সবই সুশৃঙ্খল।
Andreas

1

আমি দুটি ভাষায়ও টাইপ করি: রাশিয়ান এবং ইংরেজি। এবং এখন আমি এই প্লাগইনটি https://github.com/lyokha/vim-xkbswitch ব্যবহার করি । এই প্লাগইনটির নেটিভ কীবোর্ড লেআউট সুইচের উপর নির্ভরতা রয়েছে, ম্যাক ওএস এক্সের জন্য আপনি আমার একটি https://github.com/myshov/xkbswitch-macosx ব্যবহার করতে পারেন ।

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