जवाबों:
इस लाइन को अपने .vimrc में जोड़ें:
command R !./%
और फिर आप स्क्रिप्ट चलाने के लिए विम ( vim-run-current-file ) में "R:" टाइप कर सकते हैं
विम नहीं करता है, और कभी भी एमैक या केट जैसे एम्बेडेड शेल का समर्थन नहीं करेगा (यदि आपका मतलब है कि), तो इस स्टैकओवरफ़्लो प्रश्न को देखें ।
डेविड स्पिलेट सही है, आप अपनी विन्न को ग्नू स्क्रीन के अंदर चला सकते हैं:
$ screen vim foo.txt
लेकिन यह आपको केवल टर्मिनल में एक विंडो मैनर जैसा दिखने वाला कुछ दे देगा - बहुत उपयोगी जब ssh पर या बिना किसी एक्स के साथ एक बॉक्स पर उपयोग किया जाता है, लेकिन स्थानीय रूप से आप बस एक और xterm खोल सकते हैं और उनके बीच स्विच कर सकते हैं। *
वैसे भी, अगर आप इस तथ्य के साथ रह सकते हैं कि आप उस फ़ाइल को नहीं देखेंगे जिसे आप आउटपुट का निर्माण करते समय देख रहे हैं, तो जैक एम की टिप अच्छी है, लेकिन छोटी हो सकती है:
: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>
मेरे vim बफर को "कन्फर्म" (?) करने के लिए सामान को गूंजना चाहता है कि कमांड चले। मैं इसे कैसे प्राप्त करूं बस इसे चुपचाप कमांड निष्पादित करें? :map <silent> ...
काम करने के लिए प्रकट नहीं होता है।
कम से कम क्रिया तरीका (जिसके लिए आपकी स्क्रिप्ट को निष्पादन योग्य होना आवश्यक है):
:!%
:!./%
ताकि स्क्रिप्ट वर्तमान निर्देशिका में मिल जाए।
!
बैश कमांड के रूप में जो कुछ भी निष्पादित करने के लिए विम को बताता है, इसलिए आप कर सकते हैं !echo "Hello"
। %
वर्तमान फ़ाइल का नाम होना करने के लिए विस्तारित किया गया है।
map <F5> :w<CR>:exe ":!python " . getreg("%") . "" <CR>
क्या मैं कृपया (F5 वर्तमान स्क्रिप्ट चलाता है) के साथ प्रयोग किया जाता है।
एक शक्तिशाली अजगर आईडीई में विम चालू करने के लिए मैं इस ट्यूटोरियल की सलाह देता हूं:
रखो यह छोटा-सा स्निपेट एक कीस्ट्रोक (जैसे के साथ वर्तमान फ़ाइल निष्पादित करने के लिए अपने .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जाने के लिए, एक नया बनाने के लिए) ।
आप डिस्प्ले को अधिक से अधिक दो भागों में विभाजित कर सकते हैं और ctrl-a, resize के साथ विभाजन के आकार को बदल सकते हैं। मैं अक्सर इस तरह से स्क्रीन का उपयोग करता हूं, और जब तक आप इसके लिए पूछने वाले एकल-कुंजी समाधान नहीं करते, तब यह बहुत सुविधाजनक हो सकता है।