답변:
이 줄을 .vimrc에 추가하십시오.
command R !./%
그런 다음 Vim에서 스크립트를 실행하기 위해 ": R"을 입력하면됩니다 ( vim-run-current-file ).
빔은 (당신이 의미하는 경우)를 참조하지 않으며, 이맥스 또는 케이트와 같은 내장 쉘을 지원하지 않습니다 이 유래 질문을 .
David Spillet가 맞습니다 .gnu 화면에서 vim을 실행할 수 있습니다.
$ screen vim foo.txt
그러나 그것은 터미널에서 원격으로 창 관리자와 유사한 것을 제공합니다-ssh 또는 X가없는 상자에서 사용될 때 매우 유용하지만 로컬에서는 다른 xterm을 열고 그들 사이를 전환 할 수 있습니다. *
어쨌든, 생성하는 출력을 보면서 편집중인 파일을 볼 수 없다는 사실을 잘 알고 있으면 Jack M의 팁은 좋지만 짧을 수 있습니다.
: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>
#!
첫 번째 줄에 shebang ( ) 이있는 모든 파일이 실행됩니다 . 인터프리터를 사용하여 파일을 실행하므로 실행 권한이 필요하지 않습니다.
* (화면에는 출력에서 복사하여 붙여 넣기, 활동 / 비 활동에 대한 숨겨진 창 모니터링, 여러 터미널에서 동시에 세션을 사용할 수 있으며 모든 프로그램을 종료 한 상태에서 로그 아웃 할 수있는 매우 깔끔한 기능이 있습니다. 실행-그것은 강력한 도구입니다).
:map ;e :w<cr>:!python %<cr>
명령이 실행되었음을 "확인"(?)하기 위해 vim 버퍼에 내용을 반향하려고합니다. 단순히 명령을 자동으로 실행하려면 어떻게해야합니까? :map <silent> ...
작동하지 않는 것 같습니다.
가장 자세한 방법은 (스크립트가 실행 가능해야 함) 아마도 다음과 같습니다.
:!%
:!./%
하려면 스크립트를 현재 디렉토리에서 찾을 수 있도록 수정해야했습니다 .
!
vim에게 bash 명령으로 다음과 같은 것을 실행하도록 지시하므로 그렇게 할 수 있습니다 !echo "Hello"
. 는 %
현재 파일의 이름으로 확장됩니다.
map <F5> :w<CR>:exe ":!python " . getreg("%") . "" <CR>
내가 함께 사용했던 것입니까 (F5는 현재 스크립트를 실행합니다).
vim을 강력한 파이썬 IDE로 바꾸려면이 자습서를 권장합니다.
넣어 이 작은 조각을 (같은 하나의 키 입력으로 현재 파일을 실행하기 위해 당신의 .vimrc에 F5
) 새로운 분할 창 버퍼에 결과를 표시합니다.
:!
괜찮지 만 결과를 보려면 터미널로 전환해야합니다.
당신이 그것을 할 수 ctrl-z
있고 vim을 다시 가져와 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
vim에 대해서는 잘 모르지만 일반적으로 screen
유틸리티를 사용 하여 화면을 분할 할 수 있습니다 . ctrl+ a, S(자본 S입니다 참고) 디스플레이를 분할하고 당신이 가진 두 가지 사이를 전환 할 수 있습니다 ctrl+ a, tab(윈도우가 비어있는 경우, 사용 ctrl+는 a, n열려있는 다른 창으로 이동하거나 ctrl+ a, c새로 만들) .
디스플레이를 둘 이상으로 분할하고 ctrl-a, : resize를 사용하여 분할의 크기를 변경할 수 있습니다. 나는이 방법으로 화면을 자주 사용하며, 요청하는 단일 키 솔루션은 아니지만 매우 편리 할 수 있습니다.