Hata ayıklamak ve daha da geliştirmek için sık sık yürütülmesi gereken küçük bir python komut dosyası üzerinde çalışıyorum.
Vim ekranını bölebilir ve bir tuş üzerinde bir tuşa basarak senaryomu yürütebilir miyim?
Hata ayıklamak ve daha da geliştirmek için sık sık yürütülmesi gereken küçük bir python komut dosyası üzerinde çalışıyorum.
Vim ekranını bölebilir ve bir tuş üzerinde bir tuşa basarak senaryomu yürütebilir miyim?
Yanıtlar:
Bu satırı .vimrc'nize ekleyin:
command R !./%
Ve sonra sadece Vim'de komut dosyasını çalıştırmak için ": R" yazabilirsiniz ( vim-run-current-file )
Vim desteklemez ve emacs veya kate gibi gömülü bir kabuğu asla desteklemeyecektir (bunu kastediyorsanız), bu yığın akışı sorusuna bakın .
David Spillet haklı, vim'inizi gnu ekranın içinde çalıştırabilirsiniz:
$ screen vim foo.txt
Ama bu sadece bir terminalde bir pencere yöneticisine uzaktan benzeyen bir şey verecektir - ssh üzerinde veya X olmayan bir kutuda kullanıldığında ÇOK yararlıdır, ancak yerel olarak başka bir xterm açıp aralarında geçiş yapabilirsiniz. *
Her neyse, ürettiği çıktıya bakarken düzenlediğiniz dosyayı görmeyeceğiniz gerçeğiyle yaşayabiliyorsanız, Jack M'in ipucu iyidir, ancak daha kısa olabilir:
:map ;e :w<cr>:!python %<cr>
Aynı amaçla, bu benim var ~/.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>
Bu #!
, ilk satırda bir shebang ( ) içeren herhangi bir dosyayı çalıştırır . Dosyayı çalıştırmak için yorumlayıcı kullanır, bu nedenle yürütme izinlerine sahip olması gerekmez.
* (ekran, çıktıdan kopyala ve yapıştır, etkinlik / etkinlik için gizli pencereleri izleme, oturumu aynı anda farklı terminallerden kullanabilme, tüm programları terk ederek çıkış yapabilme gibi diğer çok temiz özelliklere sahiptir. çalışan - güçlü bir araçtır).
:map ;e :w<cr>:!python %<cr>
komutun çalıştırıldığını "onaylamak" (?) için vim arabelleğe bir şeyler yankılamak istiyor. Komutu sessizce yürütmesini nasıl sağlarım? :map <silent> ...
çalışmıyor gibi görünüyor.
En küçük ayrıntılı yol (betiğinizin çalıştırılabilir olmasını gerektirir) muhtemelen:
:!%
:!./%
komut dosyasını geçerli dizinde bulunacak şekilde değiştirmek zorunda kaldım .
!
vim'e bash komutu olarak takip eden her şeyi yürütmesini söyler, böylece yapabilirsiniz !echo "Hello"
. %
Geçerli dosyanın adı olarak genişletilir.
Bir yoktur benzer StackOverflow soru .
map <F5> :w<CR>:exe ":!python " . getreg("%") . "" <CR>
Ne ile kullanılan lütfen (F5 geçerli betiği çalıştırır).
Vim güçlü bir python IDE dönüştürmek için bu öğretici tavsiye:
Geçerli dosyayı bir tuşa basarak (gibi ) yürütmek için bu küçük snippet'i .vimrc'nize koyun F5
ve sonucu yeni bir bölme arabelleğinde görüntüleyin.
:!
tamam ancak sonucu görmek için terminalinize geçmeniz gerekiyor.
Bununla birlikte ctrl-z
vim geri getirebilirken, fg
bağlamı çok fazla değiştirmeniz gerektiği anlamına gelir.
Bu pasajın çalışma şekli, önce yürütülebilir dosyayı temel alarak yürütülebilir dosyayı tahmin etmek filetype
ve ardından argümanı olarak geçerli dosyayla çalıştırmaktır.
Daha sonra kullanışlı bir yardımcı program yöntemi çıktıyı alır ve yeni bir tampona atar.
Mükemmel değil, ancak yaygın iş akışları için gerçekten hızlı.
Aşağıda kopyalanan pasaj şöyledir:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""" 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
Vim'i doğrudan bilmiyorum, ancak ekranı genellikle screen
yardımcı programla bölebilirsiniz . ctrl+ a, S(Bir sermaye S notu) ekranı bölecek ve birlikte ikisi arasında geçiş yapabilirsiniz ctrl+ a, tab(pencere boşsa, kullanım ctrl+ a, nbaşka açık pencereye geçmek için veya ctrl+ a, cyeni bir tane oluşturmak için) .
Ekranı ikiden fazlaya bölebilir ve bölmelerin boyutunu ctrl-a,: resize ile değiştirebilirsiniz. Ekranı bu şekilde sık kullanıyorum ve istediğin tek tuşlu çözüm olmasa da, çok uygun olabilir.