আমি প্রথমবার টুইটভিম ব্যবহার করছি। সেখানকার সমস্ত ইউআরএল দেখে আমার অবাক করে দিয়েছিল, আপনার পছন্দসই ব্রাউজারে বা নির্দিষ্ট একটির মধ্যে কার্সারের নিচে URL খোলার কোনও উপায় আছে কি?
আমি প্রথমবার টুইটভিম ব্যবহার করছি। সেখানকার সমস্ত ইউআরএল দেখে আমার অবাক করে দিয়েছিল, আপনার পছন্দসই ব্রাউজারে বা নির্দিষ্ট একটির মধ্যে কার্সারের নিচে URL খোলার কোনও উপায় আছে কি?
উত্তর:
আপডেট হয়েছে: আজ টপপের টুইট থেকে
টিপুন gx। আপনি ব্রাউজারটি কাস্টমাইজ করতে পারেন। জিনোম এবং ম্যাক ওএস এক্সে এটি ইতিমধ্যে gnome-open/ ব্যবহার করে open। সাধারণত আপনি g:netrw_browsex_viewerযা চান সেট করতে পারেন।
আসল উত্তর:
আমি এই ফাংশনটি কোথায় পেয়েছি তা মনে রাখবেন না। ইউআরএলটিতে হ্যাশ (#) সহ একটি বাগ রয়েছে, তবে ফাংশনটি যথেষ্ট ভালভাবে কাজ করে যা আমি এটি ঠিক করতে বিরক্ত করব না।
function! HandleURL()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;]*')
echo s:uri
if s:uri != ""
silent exec "!open '".s:uri."'"
else
echo "No URI found in line."
endif
endfunction
map <leader>u :call HandleURL()<cr>
দ্রষ্টব্য: আপনি যদি ম্যাকের উপরে না থাকেন তবে লিনাক্সের জন্য gnome-open/ xdg-openঅথবা উইন্ডোজের জন্য 'আপনার ওয়েব ব্রাউজারে পাথ' ব্যবহার করুন
gxএত শক্তিশালী, ধন্যবাদ! এটি উপযুক্ত অ্যাপ্লিকেশন সহ ফাইলগুলিও খোলায় ™
আপনি যদি ভিম 7.৪ বা তার পরে ব্যবহার করছেন তবে সাধারণ মোডে আপনার কার্সরটি ইউআরএল এর নীচে রাখুন, তারপরে ক্লিক করুন gx, ইউআরএল স্বয়ংক্রিয়ভাবে ব্রাউজারে খোলা হবে
:h netrw_gx: * উইন্ডোজ 32 বা 64 এর জন্য, ইউআরএল এবং ফাইলপ্রোটোকলহ্যান্ডলার dlls ব্যবহার করা হয়। জিনোমের জন্য (জিনোম-ওপেন সহ): জিনোম-ওপেন ব্যবহৃত হয়। * কেডিএর জন্য (কেএফএমসিলেট সহ): কেএফএমসিলেট ব্যবহার করা হয় * ম্যাক ওএস এক্স এর জন্য: ওপেন ব্যবহৃত হয়। * অন্যথায় নেটরফিলহ্যান্ডলার প্লাগইন ব্যবহৃত হয়।
আমি এই স্ক্রিপ্টটি keywordকার্সারের অধীনে গুগল অনুসন্ধান করতে ব্যবহার করি :
nmap <leader>g :call Google()<CR>
fun! Google()
let keyword = expand("<cword>")
let url = "http://www.google.com/search?q=" . keyword
let path = "C:/Program Files/Mozilla Firefox/"
exec 'silent !"' . path . 'firefox.exe" ' . url
endfun
আপনার ব্যবহার করা উচিত getline('.')এবং matchstr()কার্সারের অধীনে url নিষ্কাশন করা উচিত । বাকিগুলিও একই রকম।
ঠিক আছে সুতরাং @ টুংড এবং @ কেভের উত্তরগুলি ব্যবহার করে এবং আমি এই স্ক্রিপ্টটি দিয়ে একটি সামান্য গবেষণা শেষ করেছিলাম, যা আমার প্রয়োজন মতো কাজ করে। @ টুংডের মতোই বলেছিলেন যে কোনও ইউআরএল থাকাতে # সমস্যা দিতে পারে তবে আমি এটির সাথে শান্ত, যদি কারও কাছে ইউআরএলটির জন্য আরও ভাল প্রকাশ থাকে তবে এটি স্বাগত হবে will
function! OpenUrlUnderCursor()
let path="/Applications/Safari.app"
execute "normal BvEy"
let url=matchstr(@0, '[a-z]*:\/\/[^ >,;]*')
if url != ""
silent exec "!open -a ".path." '".url."'" | redraw!
echo "opened ".url
else
echo "No URL under cursor."
endif
endfunction
nmap <leader>o :call OpenUrlUnderCursor()<CR>
.Vimrc ফাইলটিতে নিম্নলিখিত লাইনটি যুক্ত করুন:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
সুতরাং সাধারণ মোডে এটি টিপছে \ এটি বর্তমান শব্দটি নির্বাচন করে এবং এটি ওয়েব ব্রাউজারে ঠিকানা হিসাবে খুলুন।
ডিফল্টরূপে নেতা হলেন \ (তবে আমি এটির সাথে ম্যাপ করেছি let mapleader = ",")। একইভাবে, ইম্যাপ ব্যবহার করে আপনি সন্নিবেশ মোডে কিছু কী ক্রম ম্যাপ করতে পারেন (তবে তারপরে এটি যদি 2 কী অনুক্রম হয় তবে এটি সম্ভবত কিছু ডিফল্ট আচরণকে ওভাররাইড করবে)।
এটি মূলত @tungd এখানে প্রস্তাবিত স্ক্রিপ্টের এক ধরণের উন্নত সংস্করণ htt https://stackoverflow.com/a/9459366/7631731 । ভিম প্রসঙ্গ রাখে এবং "#" ধারণকারী URL গুলি সঠিকভাবে পরিচালনা করে।
function! HandleURL()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;()]*')
let s:uri = shellescape(s:uri, 1)
echom s:uri
if s:uri != ""
silent exec "!open '".s:uri."'"
:redraw!
else
echo "No URI found in line."
endif
endfunction
nnoremap <leader>w :call HandleURL()<CR>¬
আমি এই পার্টিতে বেশ দেরি করে ফেলেছি তবে উইন্ডোজ on-তে খুব ভালভাবে কাজ করার এটি করার আরেকটি উপায় এখানে।
উভয় ইনস্টল করুন তেজ-শেল এবং তেজ-বিবিধ তেজ মধ্যে আমি সদা সন্ত্রস্ত মাধ্যমে এই কাজ করার প্রস্তাব দিই প্যাথোজেন কেবল প্লাগইন এবং তারপর cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.gitmsysgit থেকে। ( এই দুটি প্লাগিন কোনো অতিরিক্ত কমান্ড অনুরোধ জানানো বা অন্যান্য নিরীহ আজেবাজে কথা সাধারণত উইন্ডোজ প্রয়োজন তৈরি ছাড়া আপনার ডিফল্ট ব্রাউজারে URL গুলি খুলতে আপনি ভালো তেজ URL গুলি খুলতে পারে। ।:Open http://duckduckgo.com এটি ব্যবহার করে দেখুন আপনি এটা পছন্দ করবেন।। )
কিছু ভিম ম্যাপিং তৈরি করুন যাতে আপনি ব্রাউজারে দ্রুত কার্সারের নীচে লাইনটি পেতে পারেন। আমি এটি আপনার কাছে মানচিত্র করব (আমার জন্য, এটি ,uস্বাভাবিক মোড থেকে)। এখানে কীভাবে:
nnoremap u: exec "ওপেন" .getget ("।")
এই ম্যাপিংটি ব্যবহার করতে, সাধারণ মোড + ইউ থেকে আপনার লিডার কী টাইপ করুন। এটি আপনার কার্সারের নীচে লাইনটি পড়া উচিত এবং এটি আপনার ডিফল্ট ব্রাউজারে খোলা উচিত।
আপনার এই ভিআইএম প্লাগইনটিতে একবার নজর দেওয়া উচিত
এটি অন্যান্য কিছু প্রতিক্রিয়াগুলিতে মূলত যা ব্যাখ্যা করা হয়েছে, তবে আপনি যদি প্লাগইন পরিচালক ব্যবহার করেন তবে নির্দিষ্ট কনফিগারেশন প্রয়োজন :)
@ কেভ দ্বারা উপরে বর্ণিত হিসাবে , লিনাক্স পরিবেশের জন্য পরিবর্তিত।
একদিকে: যখন আমার টার্মিনালে এই ফাংশনটি কার্যকর করা হয়েছিল (Vim 8.1) তখন ভিম স্ক্রিনটি অস্পষ্ট হয়ে পড়েছিল (বেশিরভাগ ক্ষেত্রে "ফাঁকা;" অর্থাত্ পাঠ্যটি উপস্থিত ছিল তবে দৃশ্যমান ছিল না)। :redraw!কমান্ড (দেখুন https://stackoverflow.com/a/1117742/1904943 ) স্ক্রিন redraws।
এতে যুক্ত করুন ~/.vimrc:
nmap <leader>g :call Google()<CR>:redraw!<CR>
fun! Google()
let keyword = expand("<cword>")
let url = "http://www.google.com/search?q=" . keyword
let path = "/usr/bin/"
exec 'silent !"' . path . 'firefox" ' . url
endfun
netrwএটি ভিএম / নিওভিমে netrw( :help netrw-noload) সরিয়ে ফেলা লোকদের জন্য একটি সমাধান । উদাহরণস্বরূপ, তারা আলাদা ফাইল-ম্যানেজারের মতো ব্যবহার করেvim-dirvish
👉 :!open <c-r><c-a>
বা মানচিত্র gx:
👉 nmap gx :!open <c-r><c-a>
আমি আসলেই এই সমস্যার সমাধানের সন্ধান করছিলাম যেহেতু আমি প্রকৃতপক্ষে ভিআইএম-এ সম্পূর্ণরূপে লোড হওয়া থেকে নেটআরউ সরিয়েছি এবং এর সাথে প্রতিস্থাপন করেছি vim-dirvish। এই প্লাগ প্রায় হয়েছে 500 ~ এলওসি তুলনায় netrwএর (11,000+ এলওসি) ।
আমি ব্যবহার করি না দূরবর্তী সম্পাদনা অনেক তাই vim-dirvish(এটা আসলে যতো তাড়াতাড়ি আমার কর্মপ্রবাহ পরিচালনা করতে শক্তিশালী যথেষ্ট netrw~ লেখক দাবী 2x আমি মনে করি এটি দ্রুত যে এর চেয়ে নেই - এটি সত্যিই ক্ষণিক এর ⚡) বৃহৎ কোডবেস / ভান্ডার খুব দরকারী। এমনকি আমি এটি 10K ফাইলের রেপোতে চেষ্টা করেছিলাম, -তাত্ক্ষণিকভাবে ফাইলগুলির তালিকা তৈরি করছি ! কারও vim-dirvishবিরুদ্ধে পরীক্ষা করা হয়েছেNerdtree , আপনি পার্থক্যটি দেখতে পাবেন।
আমি নেমে vim-vinegarখুব তেজ-dirvish কারণ -বাঁধাই যাহাই হউক না কেন, এবং কনফিগারেশন অধিকাংশ vim-vinegarহল netrwসুনির্দিষ্ট। এটি কেবল এটির দরকার নেই। এক পাথরে দুটি পাখি!
এই প্লাগইনটির সৌন্দর্যটি হ'ল এটি ভিআইএন (Vim Emacs নয়) এর দর্শনকে জড়িয়ে ধরে । যেখানে এটি নিজেরাই সবকিছু করার পরিবর্তে টার্মিনালে ফাইল ম্যানিপুলেশনগুলি করার জন্য অন্যান্য প্রোগ্রামগুলির শক্তি ব্যবহার করে। গুরুত্বপূর্ণ অংশটি হ'ল এই বাহ্যিক প্রোগ্রামগুলি কীভাবে ভিএম এর সাথে যোগাযোগ করে। এবং এটি দ্বারা অর্জন করা হয় :Shdo, এবং এটির একটি সুবিধাজনক কী রয়েছে .(ডট কমান্ড , যা পুনরাবৃত্ত আদেশের জন্য স্মৃতিযুক্ত) এটি বাছাইয়ের ক্ষেত্রে বা আসল লাইন উভয়ই করুন vim-dirvish। এবং পুনর্নামকরণের !rmজন্য অপসারণের জন্য টাইপ করুন !mv।
যেহেতু আমি নেট্রব অক্ষম করেছি, ( :help netrw-noload) আমি নিজেকে gxসময়-সময় পৌঁছে যেতে দেখলাম । gxকার্যকারিতা ফিরে পেতে আমি কোনও প্লাগইন লোড করতে চাইনি ।
সমাধানের জন্য এখন কমান্ড মোডে একটি বাধ্যবাধকতা রয়েছে, ctrl-rতারপরে ctrl-a( :help c_CTRL-R_CTRL-A), আপনার কার্সারে থাকা যা কিছু আছে তা কমান্ড লাইনে আটকানো, সুতরাং আপনি যদি এটির সাথে :!xdg-open/ :!open(ম্যাকের জন্য) একত্রিত করেন , আপনি বেশ সেট করেছেন।
:wসাধারণ বাইন্ডিং না থাকার একটি কারণ রয়েছে । আমি বিস্মিত সবচেয়ে সমাধান নয় লিভারেজ কমান্ড কর্মপ্রবাহ, আমি সাবেক কমান্ড ব্যবহার করে অনেক, :s, :g, :v, :argdo, :cdo, এবং বন্ধুদের। এটি বিভিন্ন মোডের সাথে সংমিশ্রণ করে, ভিমের পুরো শক্তিটি ট্যাপ করে। সুতরাং কেবল একটি মোডে থাকবেন না, ভিএম এর সম্পূর্ণ শক্তিটি উপার্জনের চেষ্টা করুন।
👉 :!open <c-r><c-a>
লক্ষ্য করুন !যেটি ভিএম এর বাইরে বাহ্যিক প্রোগ্রামগুলির শক্তিকে সুফলিত করতে নির্দেশ করে। ভিন !
যদি আপনি gxকার্যকারিতাটি আবার চান তবে আপনি একই কমান্ডটি ব্যবহার করে ম্যাপ করতে পারেন:
nmap gx :!open <c-r><c-a>আমি আমার বাইন্ডিংগুলিকে নিঃশব্দ করতে চাই, তাই যুক্ত করেছি <silent>এবং :silকৌশলটি করব ( :help :map-silent)
👉 nmap <silent>gx :sil !open <c-r><c-a><cr>
:!open:!xdg-open:!wslviewআমি তিনটি প্ল্যাটফর্ম ব্যবহার করি এবং তারা দুর্দান্ত কাজ করে। আপনি কেবল তার ভিএম বাইন্ডিংগুলির জন্য একটি ব্যবহার করতে পারেন, যেমন। :!openএবং আপনার মাত্র ওরফে কমান্ড যাই হোক না কেন প্ল্যাটফর্ম-নির্দিষ্ট প্রোগ্রাম আপনি আছে।bashrc/zshrc/fish configopen
যেমন alias open = wslview
এইভাবে, আমার vimrcপ্ল্যাটফর্ম-অজানাস্টিক থাকে, এবং আমি কেবলমাত্র অসঙ্গতিগুলির সাথে মোকাবিলা করব bashrc/zshrc/fish config।