programing

Vim에서 Python 코드 실행 중

megabox 2023. 7. 18. 21:38
반응형

Vim에서 Python 코드 실행 중

저는 Vim을 사용하여 Python 코드를 작성하고 있으며, 코드를 실행하고 싶을 때마다 Vim 내부에 다음과 같이 입력합니다.

:w !python

답답해서 Vim 내부에서 파이썬 코드를 더 빨리 실행할 수 있는 방법을 찾고 있었습니다.터미널에서 파이썬 스크립트를 실행할 수 있습니까?저는 리눅스를 사용하고 있습니다.

다음을 추가하는 것은 어떻습니까?autocmd의 신에게에.~/.vimrc을 만듭니다.

autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>

그러면 당신은 누를 수 있습니다.<F9>를 실행하기 " " 현버를실다니합행퍼재다▁to▁the▁with▁execute"를 사용합니다.python

설명:

  • autocmd이 Vim 자동실에서 {event} 파일을 (파일: 파이썬 파일)
  • [i]map가 키만기들의 바로 가기 .<F9> 모드로/보통 모드로
  • <buffer>개의 경우: /파일을 하십시오.
  • <esc> 모드를 입니다.
  • :w<CR>합니다.
  • ! 셸서다시실명다니행합을령도음(try 에시니다)).:!ls)
  • %활성 버퍼의 파일 이름으로 대체됩니다.하지만 공백이나 다른 "나쁜" 것들을 포함할 수 있기 때문에 쓰지 않는 것이 더 좋습니다.:python %그러나 사용:
  • shellescape특수 문자를 이스케이프합니다.1

첫 하고 TL;DR을 됩니다.<F9>먼저 파일을 저장한 다음 파이썬으로 파일을 실행합니다.일을 남깁니다.

를 눌러 일반 모드로 이동합니다.<esc> 유형 형유:

! clear; python %

enter image description here

단계별 설명:

!할 수 .

clear.

;명령을 하여 두 할 수 .

python스크립트를 으로 대체될 수 있습니다).ruby예)(예:

%파일 을 현재 파이접매어전변다달니로 로 전달합니다.python

내 .vimrc 파일에 이것이 있습니다.

imap <F5> <Esc>:w<CR>:!clear;python %<CR>

Python 스크립트 편집이 끝나면 다음을 누릅니다.<F5>스크립트가 저장된 다음 빈 화면에서 실행됩니다.

이전 답변을 기반으로, 코드의 출력을 보는 동안 코드를 보고 싶다면 찾을 수 있습니다.:ter(:terminal가 유용합니다 명령이 유용합니다.

autocmd Filetype python nnoremap <buffer> <F5> :w<CR>:ter python2 "%"<CR>
autocmd Filetype python nnoremap <buffer> <F6> :w<CR>:vert ter python3 "%"<CR>

용사를 합니다.vert두 번째 줄에서는 코드를 수평이 아닌 수직 분할로 실행합니다.

부정적인 점은 코드가 실행된 분할 창을 닫지 않으면 여러 번 실행 후 많은 분할이 발생한다는 것입니다(같은 출력 창이 재사용되는 원래 파이썬 IDLE에서는 발생하지 않습니다).

는 이 을 안에 합니다./home/user/.vimrc)

플러그인: 주피터-빔

그래서 당신은 라인을 보낼 수 있습니다 (<leader>E선택(), 시각적 선택()<leader>e 중인 )으로 이동합니다.jupyter-client)ipython)

enter image description here

저는 편집자와 통역자를 분리하는 것을 선호합니다.잘못된 입력 읽기 명령을 보낸다고 상상해 보십시오...

는 막지으사명다령같수있반다습니복이할음마과을로 반복할 수 있다는 것을 @:그래서 당신은 그 두 캐릭터만 반복하면 됩니다.

" 면아문을열저수있다니"를 .w !python중 예: 레스터중예하로나지예(로:▁into나▁one"a를 들어를 누른 을 .:<C-R>a<CR>등록부의 합니다.a명령행으로 이동하여 실행합니다.

아니면 내가 하고 지도를 만들 수도 있습니다.<leader>z:!python %<CR>현재 파일을 실행합니다.

고지싶않다면보▁"▁""를 싶지 .:exec python file.py매번 인쇄할 경우 다음을 사용합니다.

nnoremap <F9> :echo system('python2 "' . expand('%') . '"')<cr>
nnoremap <F10> :echo system('python3 "' . expand('%') . '"')<cr>

그것은 또한 제 전력선/빔 항공사 상태 표시줄을 엉망으로 만들지 않았습니다.

셰방 라인을 사용하는 것을 생각해 보세요. 그러면 파이썬뿐만 아니라 어떤 언어로도 사용할 수 있을 것입니다.

셰방 추가:

스크립트의 첫 줄에 추가합니다.

#!/usr/bin/env python3

또는 Python 2를 사용하는 경우:

#!/usr/bin/env python2

Vim 키맵:

을 당신의 니추합다에 추가하세요.~/.vimrc:

nmap <F7> :w<cr>:!clear;"%:p"<cr>

파일을 실행 파일로 만들기:

Vim 입력:

:!chmod +x %

또는 터미널:

chmod +x script_name.py

설명:

정상 모드에서 F7을 누르면 Vim은 현재 파일을 bash 스크립트로 실행하려고 시도합니다.그러면 bash 인터프리터가 shebang line을 보고 이 파일이 Python(또는 필요한 경우 다른 프로그램)으로 전달되어야 한다는 것을 이해할 것입니다.

또한 터미널에서 스크립트 이름을 사용하여 스크립트를 실행할 수 있습니다.

./script_name.py

이 방법 대신에 (그것도 작동할 것입니다):

python3 script_name.py

피톤/해스켈/루비/C++로... vim로터부거에 으로부터.filetype), vim-quickrun이라는 좋은 플러그인이 있습니다.기본적으로 많은 프로그래밍 언어를 지원합니다.또한 쉽게 구성할 수 있으므로 필요한 경우 모든 파일 형식에 대해 기본 동작을 정의할 수 있습니다.github repo에는 화려한 readme가 없지만 doc 파일로 잘 문서화되어 있습니다.

내 .vimrc에 이것이 있습니다.

"map <F9> :w<CR>:!python %<CR>"

현재 버퍼를 저장하고 Esc + F9 키만 눌러 코드를 실행합니다.

승인된 답변은 (Linux에서) 나에게 효과가 있지만, 실행하기 전에 이 명령도 버퍼를 저장하기를 원했기 때문에 약간 수정했습니다.

nnoremap <buffer> <F9> :w <bar> :exec '!python' shellescape(@%, 1)<cr>

:w <bar>버퍼를 저장한 다음 버퍼에서 코드를 실행합니다.

사용합니다

:! [filename.py]; python %

그게 제게 효과가 있는 겁니다.

skywind3000/asyncrun.vim도 사용할 수 있습니다.@Focused와 유사합니다.늑대가 리스트에 올랐습니다.

  1. 홈 디렉토리로 이동합니다. cd
  2. 을 사용하여 vimrc. vim .vimrc
  3. 파일에 다음 코드를 추가합니다. nmap <F4> <Esc>:w<CR>:!clear;python %<CR>
  4. 저장하고 그만 둬. ZZ

다음 번에 코드를 실행하려면 를 누르십시오.F4"정상 모드"에서.를 " 모드"로 하려면 "삽입 모드"로 대체합니다.nmap와 함께imap.

저는 이거 써요.자동으로 프로그램을 저장하고 셸로 실행합니다.프로그램이 실행된 후 vim으로 돌아갑니다.

▁pressing니▁by합을 누르면 작동합니다.<F5> mode in vimvim 에의▁v▁mode▁in▁in▁insertim서에드.파일에 합니다.vimrc 파일에는 다음 코드 스니펫이 있습니다.

imap <F5> <Esc>:w<CR>:!python % [filename.py]; <CR>

저는 방금 이 질문에 대해 이전에 제공된 두 가지 솔루션을 결합했고 그것은 저에게 효과가 있었습니다.

감사합니다!

간단한 방법은 다음을 입력하는 것입니다.:일반 모드에서 키보드의 위쪽 화살표 키를 누르고 Enter 키를 누릅니다.이렇게 하면 VIM에서 마지막으로 입력한 명령이 반복됩니다.

빠른 속도로 되돌아가고 싶다면,:w은 명령, 멋것입력것는다입니를 입력하는 입니다.:w위쪽 화살표를 누릅니다. 시는명순령환다니합으로 합니다.w.

코드 어딘가에 커서를 놓습니다.마우스 오른쪽 단추를 클릭하고 "선택" 선택 항목 중 하나를 선택하여 코드를 강조 표시합니다.그런 다음 Ctrl 키를 누릅니다. 그러면 '<, >'라는 새 프롬프트가 나타납니다.

이제!python을 입력하여 작동하는지 확인합니다.

저는 같은 문제를 해결하기 위해 며칠을 보낼 뿐입니다!!!코딩을 사용했습니다.

s='My name'
print (s) 

머리를 다 뽑은 후에, 마침내 머리를 맞췄어요!

을 령명매저대신에 넣는 .vimrc를 당신의 매을입니에 .~/.vim/ftplugin/python.vim(윈도우))$HOME\vimfiles\ftplugin\python.vim이 파일이나 디렉터리가 없으면 만들기만 하면 됩니다.▁a▁you다▁mapped▁when▁is▁open▁this를 열 때만 매핑됩니다..py파일 또는 파일이 있는 모든 파일filetype=pythonPython 스크립트에서만 이 명령을 실행할 수 있기 때문입니다.

실제 매핑은 스크립트가 실행되는 동안 Vim에서 편집할 수 있으면 좋겠습니다.@cazyas의 대답에서 벗어나, 나는 다음과 같은 것을 내 안에 가지고 있습니다.ftplugin\python.vim(Windows):

noremap <F5> <Esc>:w<CR>:!START /B python %<CR>

이렇게 하면 현재 Python 스크립트가 백그라운드에서 실행됩니다.Linux의 경우 다음과 같이 변경합니다.

noremap <F5> <Esc>:w<CR>:!python % &<CR>

augroup 명령을 사용하여 키 바인딩이 1개인 모든 언어에 대해 확장할 수 있습니다. 예:

augroup rungroup
    autocmd!
    autocmd BufRead,BufNewFile *.go nnoremap <F5> :exec '!go run' shellescape(@%, 1)<cr>
    autocmd BufRead,BufNewFile *.py nnoremap <F5> :exec '!python' shellescape(@%, 1)<cr>
augroup END

다음을 사용해 보셨습니까?

:!python nameofyourfile.py

예: https://www.youtube.com/watch?v=mjUxEX4OssM

구문일 수도 있고 플러그인 또는 다른 사용자가 사용한 패키지가 누락되었을 수도 있습니다.당신은 그냥 일반 터미널을 사용하고 있습니까, 아니면 MobaXterm과 같은 다른 것을 사용하고 있습니까?위의 코드는 vim 내부의 터미널을 사용하여 python 스크립트를 실행하는 데 사용됩니다(출력은 vim 세션 내부에 표시됨)

vim에서 python 콘솔로 python 코드를 보내는 "블록별"에 Vim-Slime 플러그인을 사용하는 것을 추천합니다.

https://github.com/jpalardy/vim-slime

:!./%현재 Python 스크립트를 실행합니다. 이것은 Shebang에서만 작동합니다.

다음과 같은 인수를 사용하여 실행할 수도 있습니다.

:!./% ARG1 ARG2

이 .vimrc 매핑에는 Conque Shell이 필요하지만 Geany(및 다른 X 편집자) 동작을 복제합니다.

  • 실행할 키를 누릅니다.
  • gnome-terminal에서 실행합니다.
  • 종료 확인을 기다립니다.
  • 종료 시 창이 자동으로 닫힙니다.

    :let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')

" run current python file to new buffer
function! RunPython()
    let s:current_file = expand("%")
    enew|silent execute ".!python " . shellescape(s:current_file, 1)
    setlocal buftype=nofile bufhidden=wipe noswapfile nowrap
    setlocal nobuflisted
endfunction
autocmd FileType python nnoremap <Leader>c :call RunPython()<CR>

언급URL : https://stackoverflow.com/questions/18948491/running-python-code-in-vim

반응형