ডাব্লুএসএল ভিম: সিস্টেম ক্লিপবোর্ড সিঙ্ক্রোনাইজ? (ক্লিপবোর্ড সেট করুন un = নামবিহীন)?


12

উইন্ডোজের জন্য ডাব্লুএসএল / বাশ ব্যবহার করার সময় আমি ব্যবহার করতে সক্ষম হতে চাই y yy 3yএবং pএকইভাবে তারা সর্বদা ভিমে কাজ করে, তবে সমস্ত অ্যাপ্লিকেশন দ্বারা ভাগ করা সিস্টেম ক্লিপবোর্ডের সাথে সংযোগ স্থাপন করে, ভিমের অভ্যন্তরীণ ক্লিপবোর্ডে নয় ... আমার কাছে ইতিমধ্যে ক্লিপবোর্ড পরিচালনা করার জন্য ডিটো রয়েছে ইতিহাস।

দেখে মনে হচ্ছে সিস্টেম ক্লিপবোর্ডের সাথে অনুলিপি / পেস্ট বাফারটি সিঙ্ক্রোনাইজ করার জন্য ভিমের ইতিমধ্যে একটি বিল্ট ইন বিকল্প রয়েছে ... তবুও ডাব্লুএসএল চালানোর সময় সমস্যাটি হ'ল /mnt/c/Windows/System32/clip.exeক্লিপবোর্ডটি অ্যাক্সেস করার জন্য আপনাকে আসলে ব্যবহার করা দরকার ... সুতরাং আমি চাইলেও ব্যবহার করতে সক্ষম হতে:

set clipboard^=unnamed

এটি এখনও ডাব্লুএসএল সমর্থন বলে মনে হচ্ছে না।

আমি বুঝতে পারি নিওভিমের এটি বিকল্প হিসাবে রয়েছে তবে আমি এখনই নিওভিমের সাথে পরীক্ষা করতে চাই না ...

আপাতত, আমি যে কাজের সন্ধান পেয়েছি তার নিকটতম জিনিসটি হ'ল:

nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>

তবে এটি আমার মতে একটি সত্যই ভয়ঙ্কর সমাধান ... এটি দ্বি-পদক্ষেপের প্রক্রিয়াটি অনুলিপি করে তোলে ...

অবশ্যই আমি কিছু কপি করতে পারি এবং মাউস / শিফট + ইনস দিয়ে পেস্ট করতে পারি, তবুও আমি মনে করি ভিমে সঠিকভাবে কাজ করার জন্য এই সিঙ্ক্রোনাইজেশনটি পাওয়ার একটি উপায় অবশ্যই রয়েছে।


এই সমাধান সুপারিশ superuser.com/a/1439881/711405
ephemerr

যে এই প্রশ্নের পাওয়া Neovim ব্যবহার করছেন তাদের জন্য, দেখুন github.com/neovim/neovim/wiki/...
আন্দ্রে কাইপভ

উত্তর:


10

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

অনুলিপি করে, ভিএম সংস্করণ> = 8.0.1394 সহ, অন্য উত্তরে উল্লিখিত হিসাবে https://vi.stackexchange.com/a/15190

let s:clip = '/mnt/c/Windows/System32/clip.exe' 
if executable(s:clip)
    augroup WSLYank
        autocmd!
        autocmd TextYankPost * call system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | '.s:clip)
    augroup END
end

নকল রেজিস্ট্রি কমান্ডগুলিতে পেস্ট করা, ম্যাপিং, যেমন "= পি বা" + পি বা যাই হোক না কেন।

map <silent> "=p :r !powershell.exe -Command Get-Clipboard<CR>
map! <silent> <C-r>= :r !powershell.exe -Command Get-Clipboard<CR>

" I thought this will be better :)
noremap "+p :exe 'norm a'.system('/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command Get-Clipboard')<CR>

ডান ক্লিক পেস্টিং কাজ করে, তবে আপনি যদি মাউসটি ব্যবহার করতে না চান তবে অসন্তুষ্ট হয়


ডাব্লুএসএল-এ viআমি যুক্ত করেছিnnoremap <S-Insert> :r !powershell.exe -Command "& {Get-Clipboard}"<Enter>
ওয়াল্টার এ

সহায়ক উত্তরের জন্য ধন্যবাদ! আমি ভাবছিলাম যে ইয়াঙ্ক কমান্ডের জন্য একটি জাল রেজিস্টার ব্যবহার করা সম্ভব হবে কি না? এর মতো কিছু noremap "+y :exe 'norm a'.system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | clip.exe')<CR>(যা কাজ করে না ...)
ট্রপিলিও

4

এই সম্পর্কে কি?

if system('uname -r') =~ "Microsoft"
  augroup Yank
    autocmd!
    autocmd TextYankPost * :call system('clip.exe ',@")
  augroup END
endif

unameলিনাক্স টার্মিনাল কমান্ড যা ওএস তথ্য প্রদান করে, যেমন এটি Linuxডাব্লুএসএল এর জন্য ফিরে আসে । সঙ্গে যেহেতু -rপতাকা, কমান্ড আয় মুক্তি OS এর তথ্য, এইভাবে এটি "উইন্ডোজ" অন্তর্ভুক্ত করা উচিত।

TextYankPostএকটি তেজ ইভেন্টটি (দেখতে :h TextYankPostমধ্যে vim), যা আপনার পাঠ্য Yank কার্যকলাপ সনাক্ত।

clip.exeWSL একটি উইন্ডোজ কম্যান্ড প্রম্প্ট এর কমান্ড (দেখতে CLIP /?যা কপি কমান্ড প্রম্পটে মধ্যে) textএকটি থেকে বা রিটার্ন commandclipbord মধ্যে মাধ্যমে text | clip.exeবা command | clip.exe। এখানে clip.exeউইম ফাংশন দ্বারা উইম থেকে নির্বাহ করা হয় system


নিওভিমে এর has('wsl')পরিবর্তে কেউ ব্যবহার করতে পারেন system('uname -r') =~ "Microsoft"
জাস্টিন এম কেজ

2

আমি কিছুদিন আগে ডাব্লুএসএল সমর্থনের জন্য ফেকলিপ করার জন্য পিআর করেছি ।

কীভাবে এটি ইনস্টল করবেন সে সম্পর্কে বিমূw় দেখুন ; help fakeclipব্যবহারের জন্য।


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