2013-03-28 3 views
3

Напрашиваемое на askubuntu.com Мне сказали, как run python on Vim. Я тестирую настройку, которая работает с кодом кода 1-го или 2-го кода кода на using python to solve a non linear equation.running python on vim

Единственная вещь, которую я сделал, была добавлена ​​печать (a) в качестве последней строки. Я запустил это вчера из оболочки и отлично работал. Может ли кто-нибудь сообщить мне, что происходит не так?

Ok поэтому я исправил vimrc с соответствующими знаками вопроса,

chmod +x ~/path/to/file/hw6problem2.py 

Тогда из Vim Я побежал

:Shell ./# 

, но я снова получил ту же ошибку синтаксиса. (ли файл должен быть сохранен как .sh, потому что я не могу получить любой .py файлов для запуска?)

[email protected]:~$ vim /home/dustin/Documents/School/UVM/Engineering/OrbitalMechanics/hw6problem2.py 

File "hw6problem2.py", line 14 
a0 = max(s/2, (s - c)/2) 
^ 
SyntaxError: invalid syntax 

shell returned 1 

Press ENTER or type command to continue 

vimrc

syntax on 
au BufWinLeave * mkview "records settings 
au BufWinEnter * silent loadview "reloads settings 


set nu "puts line numbers on 
set ic "case insensitive 
set foldmethod=syntax "for the latex-suite 
set autoread "autoload when files in the buffer have been modified 
set autochdir "autochange directory 


"set wrap 
set wrap 
" set lines=50 columns=80 

" resizes window 
:map g1 :set lines=20<CR>:set columns=80<CR> 
:map g2 :set lines=50<CR>:set columns=80<CR> 
:map g3 :set lines=50<CR>:set columns=170<CR> 
:map <F6> :! firefox % &<CR> 
:map E Ea 

"set autoindent 

set tabstop=4 
set shiftwidth=2 
set expandtab 
set smartindent 
" 
" Stuff for latex-suite 

" REQUIRED. This makes vim invoke Latex-Suite when you open a tex file. 
" It also allows you to set different actions for different filetypes 
" in ~/.vim/after/ftplugin/*.vim 
filetype plugin on 

set shellslash 

" IMPORTANT: grep will sometimes skip displaying the file name if you 
" search in a singe file. This will confuse Latex-Suite. Set your grep 
" program to always generate a file-name. 
set grepprg=grep\ -nH\ $* 

" OPTIONAL: This enables automatic indentation as you type. 
filetype indent on 

" OPTIONAL: Starting with Vim 7, the filetype of empty .tex files defaults to 
" 'plaintex' instead of 'tex', which results in vim-latex not being loaded. 
" The following changes the default filetype back to 'tex': 
let g:tex_flavor='latex' 
let g:Tex_ViewRule_pdf = 'okular' 


""""""""""""""""""""""""""""""""""""""" 
" => Shell command 
""""""""""""""""""""""""""""""""""""""" 

command! -complete=shellcmd -nargs=+ Shell call s:RunShellCommand(<q-args>) 

function! s:RunShellCommand(cmdline) 
let isfirst = 1 
let words = [] 
for word in split(a:cmdline) 
if isfirst 
    let isfirst = 0 " don't change first word (shell command) 
else 
    if word[0] =~ '\v[%#<]' 
    let word = expand(word) 
    endif 
    let word = shellescape(word, 1) 
endif 
call add(words, word) 
endfor 
let expanded_cmdline = join(words) 
rightbelow new 
setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap 
call setline(1, 'You entered: ' . a:cmdline) 
call setline(2, 'Expanded to: ' . expanded_cmdline) 
call append(line('$'), substitute(getline(2), '.', '=', 'g')) 
silent execute '$read !'. expanded_cmdline 
1 
endfunction 
+0

Не могли бы вы разместить код вокруг строки 14? –

+1

Это, вероятно, не имеет ничего общего с Вимом. Нет ничего плохого в этой линии Python. Пожалуйста, разместите весь файл Python (или ссылку на его суть, если он большой) или больше контекста. Я подозреваю, что вы просто вводите опечатку или что-то в этом роде. –

+1

@PavelAnossov Код находится во второй ссылке – dustin

ответ

2

Это, вероятно, будет проблема питона ,

На стороне нет, существует большая функция оболочки для выполнения сценариев и перенаправления вывода в буфер vim (разделенное окно).

Синтаксис для выполнения текущего скрипта (вы должны иметь CHMOD + х и притон линии):

:Shell ./# 

Для того, чтобы добавить функцию, добавьте в .vimrc:

command! -complete=shellcmd -nargs=+ Shell call s:RunShellCommand(<q-args>) 

function! s:RunShellCommand(cmdline) 
    let isfirst = 1 
    let words = [] 
    for word in split(a:cmdline) 
    if isfirst 
     let isfirst = 0 " don't change first word (shell command) 
    else 
     if word[0] =~ '\v[%#<]' 
     let word = expand(word) 
     endif 
     let word = shellescape(word, 1) 
    endif 
    call add(words, word) 
    endfor 
    let expanded_cmdline = join(words) 
    rightbelow new 
    setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap 
    call setline(1, 'You entered: ' . a:cmdline) 
    call setline(2, 'Expanded to: ' . expanded_cmdline) 
    call append(line('$'), substitute(getline(2), '.', '=', 'g')) 
    silent execute '$read !'. expanded_cmdline 
    1 
endfunction 

https://github.com/ruslanosipov/dotfiles/blob/master/.vimrc#L137

+0

Я добавил это в свой vimrc, а затем запустил код с помощью строки shebang #!/Usr/bin/env python, но получил следующую ошибку: Ошибка при обработке BufWinEnter Автоматические команды для "*": E32: Нет файла name Нажмите ENTER или введите команду для продолжения – dustin

+0

Пробел между 'bin /' и 'env':' #!/usr/bin/env python'. Попробуйте сделать ': Shell ./%' –

+0

, что было опечаткой. Теперь он говорит, что обнаружена ошибка при обработке BufWinEnter Auto команды для «*»: E32: Нет Имя файла обнаружен Ошибка при обработке функции 7_RunShellCommand: линия 20: E499: Пустое имя файла для «%» или «#» только, работает с ": p: h": $ read! ./% Нажмите ENTER или введите команду для продолжения – dustin