উত্তর:
আপনার .vimrc এ এই লাইনটি যুক্ত করুন:
command R !./%
এবং তারপরে আপনি স্ক্রিপ্টটি চালানোর জন্য ভিমে থাকাকালীন ": আর" টাইপ করতে পারেন (ভিম -রান-কারেন্ট-ফাইল )
ভিম না করে এবং কখনও ইমাকস বা কেটের মতো এম্বেড শেল সমর্থন করে না (যদি আপনি এটি বোঝাতে চান), এই স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন ।
ডেভিড স্পিললেট ঠিক আছে, আপনি 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>
এটি #!
প্রথম লাইনে একটি শেবাং ( ) রয়েছে এমন কোনও ফাইল চালায় । এটি ফাইলটি চালনার জন্য দোভাষী ব্যবহার করে, সুতরাং এর সম্পাদনের অনুমতি পাওয়ার দরকার নেই।
* (স্ক্রিনে আউটপুট থেকে অনুলিপি এবং পেস্টের মতো আরও কিছু খুব সুন্দর বৈশিষ্ট্য রয়েছে যা ক্রিয়াকলাপ / নো-ক্রিয়াকলাপের জন্য লুকানো উইন্ডোজগুলি পর্যবেক্ষণ করে একই সাথে বিভিন্ন টার্মিনাল থেকে সেশনটি ব্যবহার করতে সক্ষম হয়ে সমস্ত প্রোগ্রাম রেখে লগ আউট করতে সক্ষম হয়) চলমান - এটি একটি শক্তিশালী সরঞ্জাম)।
:map ;e :w<cr>:!python %<cr>
কমান্ডটি চালিত হয়েছে "নিশ্চিত" (?) করতে আমার ভিম বাফারের কাছে জিনিসগুলি প্রতিধ্বনিত করতে চায়। কমান্ডটি নিঃশব্দে কার্যকর করতে আমি কীভাবে এটি পাব? :map <silent> ...
কাজ করে না।
সর্বনিম্ন ভার্বোজ উপায় (যার জন্য আপনার স্ক্রিপ্টটি কার্যকর করা প্রয়োজন) সম্ভবত:
:!%
:!./%
যাতে স্ক্রিপ্টটি বর্তমান ডিরেক্টরিতে পাওয়া যায়।
!
বাম কমান্ড হিসাবে যা কিছু অনুসরণ করে তা সম্পাদন করতে ভিমকে বলে !echo "Hello"
। %
বর্তমান ফাইলের নাম হতে প্রসারিত করা হয়।
একটি নেই অনুরূপ Stackoverflow প্রশ্ন ।
map <F5> :w<CR>:exe ":!python " . getreg("%") . "" <CR>
আমি দয়া করে যা ব্যবহার করেছি (এফ 5 বর্তমান স্ক্রিপ্টটি চালায়)।
ভিমকে শক্তিশালী অজগর আইডিইতে রূপান্তর করার জন্য আমি এই টিউটোরিয়ালটির প্রস্তাব দিই:
একটি কী-স্ট্রোকের (বর্তমান) ফাইলের সাথে বর্তমান ফাইলটি কার্যকর করতে আপনার .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
আমি সরাসরি ভিম সম্পর্কে জানি না, তবে আপনি সাধারণত screen
ইউটিলিটি দিয়ে এইভাবে পর্দাটি বিভক্ত করতে পারেন । ctrl+ + a, S(নোট, একটি মূলধন এস যে) ডিসপ্লে বিভক্ত হবে এবং আপনার সাথে দুই মধ্যে সুইচ করতে পারেন ctrl+ + a, tab(যদি জানালা খালি, ব্যবহার ctrl+ + a, nঅন্য খোলা জানালা বা যাওয়ার ctrl+ + a,c একটি নতুন তৈরি করতে) ব্যবহার করুন) ।
আপনি ডিসপ্লেটিকে আরও দু'ভাগে বিভক্ত করতে পারেন, এবং সিআরটিএল-এ, স্পেসের আকারগুলি পরিবর্তন করতে পারেন: পুনরায় আকার দিন। আমি প্রায়শই এইভাবে পর্দা ব্যবহার করি এবং এটি যদি আপনি যে সিঙ্গেল-কি সমাধান না চান তবে এটি খুব সুবিধাজনক হতে পারে।