ভিম: আমি যে স্ক্রিপ্টটিতে একটি বিভক্ত স্ক্রিনে কাজ করছি তা সম্পাদন করুন


16

আমি একটি ছোট অজগর স্ক্রিপ্টে কাজ করছি, যার ডিবাগ করতে এবং আরও বিকাশ করতে ঘন ঘন মৃত্যুদণ্ড কার্যকর করা প্রয়োজন।

আমি কি ভিএম স্ক্রিনটি বিভক্ত করতে পারি এবং আমার স্ক্রিপ্টটি কি-স্ট্রোকের এক অংশে চালিত করতে পারি?

উত্তর:


9

আপনার .vimrc এ এই লাইনটি যুক্ত করুন:

command R !./%

এবং তারপরে আপনি স্ক্রিপ্টটি চালানোর জন্য ভিমে থাকাকালীন ": আর" টাইপ করতে পারেন (ভিম -রান-কারেন্ট-ফাইল )


10

ভিম না করে এবং কখনও ইমাকস বা কেটের মতো এম্বেড শেল সমর্থন করে না (যদি আপনি এটি বোঝাতে চান), এই স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন

ডেভিড স্পিললেট ঠিক আছে, আপনি gnu স্ক্রিনের ভিতরে আপনার ভিম চালাতে পারেন:

$ screen vim foo.txt

তবে এটি আপনাকে কেবলমাত্র টার্মিনালে উইন্ডো ম্যানেজারের সাথে দূরবর্তীভাবে সাদৃশ্যযুক্ত কিছু দেবে - এসএসএসের মাধ্যমে বা কোনও এক্স নেই এমন বাক্সে ব্যবহার করা খুব কার্যকর তবে স্থানীয়ভাবে আপনি অন্য একটি এক্সটার্ম খুলতে এবং তাদের মধ্যে স্যুইচ করতে পারেন *

যাইহোক, আপনি যদি এই সত্যটি নিয়ে বেঁচে থাকতে পারেন যে উত্পাদিত আউটপুটটি দেখার সময় আপনি যে ফাইলটি সম্পাদনা করছেন তা আপনি দেখতে পাবেন না, জ্যাক এম এর টিপটি ভাল তবে সংক্ষিপ্ত হতে পারে:

:map ;e :w<cr>:!python %<cr>

একই উদ্দেশ্যে, আমার এটিতে ~/.vimrc:

au BufEnter *
\if match( getline(1) , '^\#!') == 0 |
\ execute("let b:interpreter = getline(1)[2:]") |
\endif

fun! CallInterpreter()
    if exists("b:interpreter")
         exec ("!".b:interpreter." %")
    endif
endfun

map <F5> :call CallInterpreter()<CR>

এটি #!প্রথম লাইনে একটি শেবাং ( ) রয়েছে এমন কোনও ফাইল চালায় । এটি ফাইলটি চালনার জন্য দোভাষী ব্যবহার করে, সুতরাং এর সম্পাদনের অনুমতি পাওয়ার দরকার নেই।

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


এই অটোকম্যান্ডটি আমার পক্ষে কাজ করে না যতক্ষণ না আমি প্রথম লাইনে (\ if দিয়ে) অউ বুফনেটারের মতো একই লাইনে রাখি তবে আমি removed
জেসন অ্যাকসেলসন

ভিম স্থানীয়ভাবে একটি শেল সমর্থন করতে পারে না, তবে আমি কেবল এই আকর্ষণীয় শেল প্লাগইনটি উল্লেখ করতে চেয়েছিলাম: vim.org/scriptts/script.php?script_id=2771
মিঃ মিক্কেল

:map ;e :w<cr>:!python %<cr>কমান্ডটি চালিত হয়েছে "নিশ্চিত" (?) করতে আমার ভিম বাফারের কাছে জিনিসগুলি প্রতিধ্বনিত করতে চায়। কমান্ডটি নিঃশব্দে কার্যকর করতে আমি কীভাবে এটি পাব? :map <silent> ...কাজ করে না।
জনি উটাহ

5

সর্বনিম্ন ভার্বোজ উপায় (যার জন্য আপনার স্ক্রিপ্টটি কার্যকর করা প্রয়োজন) সম্ভবত:

 :!%

এটি কাজ করার জন্য, আমাকে এটিতে পরিবর্তন করতে হয়েছিল :!./%যাতে স্ক্রিপ্টটি বর্তমান ডিরেক্টরিতে পাওয়া যায়।
পল উইন্টজ

এবং, আমি কোনও বিশেষজ্ঞ নই, তবে এটি প্রদর্শিত হয় যে !বাম কমান্ড হিসাবে যা কিছু অনুসরণ করে তা সম্পাদন করতে ভিমকে বলে !echo "Hello"%বর্তমান ফাইলের নাম হতে প্রসারিত করা হয়।
পল উইন্টজ

2

এটি বিভক্ত স্ক্রিন নাও হতে পারে, তবে এটি আমার পক্ষে বরং ভালভাবে কাজ করে:

map ;e :w<CR>:exe ":!python " . getreg("%") . "" <CR>

এই মানচিত্রটি ;eবর্তমান ফাইলটি লেখার জন্য এবং অজগরটি ব্যবহার করে এটি সম্পাদন করে (এটি ধরে নেয় যে পাইথন আপনার উপর রয়েছে PATH)।


2

Bexec তেজ প্লাগইন ঠিক কি আপনি চান না। কীবোর্ড শর্টকাট অন্তর্ভুক্ত।



0
map <F5> :w<CR>:exe ":!python " . getreg("%") . "" <CR> 

আমি দয়া করে যা ব্যবহার করেছি (এফ 5 বর্তমান স্ক্রিপ্টটি চালায়)।

ভিমকে শক্তিশালী অজগর আইডিইতে রূপান্তর করার জন্য আমি এই টিউটোরিয়ালটির প্রস্তাব দিই:


0

একটি কী-স্ট্রোকের (বর্তমান) ফাইলের সাথে বর্তমান ফাইলটি কার্যকর করতে আপনার .vimrc এ এই ছোট স্নিপেটটি রাখুন F5এবং ফলাফলটি একটি নতুন স্প্লিট-ফলক বাফারে প্রদর্শিত হবে।

:! ঠিক আছে তবে ফলাফলটি দেখতে আপনার টার্মিনালে স্যুইচ করতে হবে।

আপনি এটির ctrl-zসাথে fgএটি করতে এবং ভিএমকে এটির সাথে ফিরিয়ে আনতে পারার অর্থ এখনও আপনার প্রসঙ্গটি অনেকটা স্যুইচ করা দরকার।

এই স্নিপেটটি যেভাবে কাজ করে তা হ'ল প্রথমে নির্ধারিতটির উপর ভিত্তি করে এক্সিকিউটেবল অনুমান করা filetypeএবং তারপরে এটি যুক্তি হিসাবে বর্তমান ফাইলের সাথে চালানো।

এর পরে একটি কার্যকর ইউটিলিটি পদ্ধতি আউটপুট নেয় এবং এটিকে একটি নতুন বাফারে ফেলে দেয়।

এটি নিখুঁত নয়, তবে সাধারণ কর্মপ্রবাহের জন্য খুব দ্রুত।

নীচে স্নিপেটটি অনুলিপি করা হয়েছে:

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""" RUN CURRENT FILE """""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Execute current file
nnoremap <F5> :call ExecuteFile()<CR>

" Will attempt to execute the current file based on the `&filetype`
" You need to manually map the filetypes you use most commonly to the
" correct shell command.
function! ExecuteFile()
  let filetype_to_command = {
  \   'javascript': 'node',
  \   'coffee': 'coffee',
  \   'python': 'python',
  \   'html': 'open',
  \   'sh': 'sh'
  \ }
  let cmd = get(filetype_to_command, &filetype, &filetype)
  call RunShellCommand(cmd." %s")
endfunction

" Enter any shell command and have the output appear in a new buffer
" For example, to word count the current file:
"
"   :Shell wc %s
"
" Thanks to: http://vim.wikia.com/wiki/Display_output_of_shell_commands_in_new_window
command! -complete=shellcmd -nargs=+ Shell call RunShellCommand(<q-args>)
function! RunShellCommand(cmdline)
  echo a:cmdline
  let expanded_cmdline = a:cmdline
  for part in split(a:cmdline, ' ')
     if part[0] =~ '\v[%#<]'
        let expanded_part = fnameescape(expand(part))
        let expanded_cmdline = substitute(expanded_cmdline, part, expanded_part, '')
     endif
  endfor
  botright new
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1, 'You entered:    ' . a:cmdline)
  call setline(2, 'Expanded Form:  ' .expanded_cmdline)
  call setline(3,substitute(getline(2),'.','=','g'))
  execute '$read !'. expanded_cmdline
  setlocal nomodifiable
  1
endfunction

-1

আমি সরাসরি ভিম সম্পর্কে জানি না, তবে আপনি সাধারণত screenইউটিলিটি দিয়ে এইভাবে পর্দাটি বিভক্ত করতে পারেন । ctrl+ + a, S(নোট, একটি মূলধন এস যে) ডিসপ্লে বিভক্ত হবে এবং আপনার সাথে দুই মধ্যে সুইচ করতে পারেন ctrl+ + a, tab(যদি জানালা খালি, ব্যবহার ctrl+ + a, nঅন্য খোলা জানালা বা যাওয়ার ctrl+ + a,c একটি নতুন তৈরি করতে) ব্যবহার করুন) ।

আপনি ডিসপ্লেটিকে আরও দু'ভাগে বিভক্ত করতে পারেন, এবং সিআরটিএল-এ, স্পেসের আকারগুলি পরিবর্তন করতে পারেন: পুনরায় আকার দিন। আমি প্রায়শই এইভাবে পর্দা ব্যবহার করি এবং এটি যদি আপনি যে সিঙ্গেল-কি সমাধান না চান তবে এটি খুব সুবিধাজনক হতে পারে।


আপনি কি নিশ্চিত যে এটি ভিমের পক্ষে কাজ করছেন? এটি আমার ভিমে কোনও প্রতিক্রিয়া বলে মনে হচ্ছে না (ফাইলগুলির মধ্যে বিভক্ত করার জন্য আমি slpit কমান্ডটি ব্যবহার করি)।
আদম মতান

এগুলি জিএনইউ স্ক্রিন, ভিম নয়, কমান্ড।
innaM

হাঁ। আমি পর্দার মধ্যে ভিএম চালানোর কথা বলছি।
ডেভিড স্পিলিট

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