Vim에서 "계속하려면 Enter 키를 누르거나 명령을 입력하십시오"프롬프트를 비활성화하려면 어떻게해야합니까?


102

외부 명령을 실행 한 후 나타나는 "계속하려면 Enter 키를 누르거나 명령을 입력하십시오"프롬프트를 비활성화하는 방법이 있습니까?

편집 : 해결 방법을 찾았 <CR>습니다. 내 .lvimrc의 바로 가기에 추가 항목 을 추가하십시오 .

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

더 좋은 아이디어가 있습니까?


9
Windows 7에서는 "스왑 파일을 열 수 없음"오류가 인쇄되었지만 표시되지 않아 메시지가 표시되기 때문에이 메시지가 자주 표시됩니다. 해결책은 set dir=$TEMPvimrc 에 넣는 것 입니다. 이것은 vim에게 임시 파일에 대해 올바른 임시 폴더를 사용하도록 지시합니다. 그러면 오류가 수정되고 "Enter를 누르십시오"프롬프트가 제거됩니다.
Lucas

답변:


76

하나의 명령에 대해 전역 적으로 수행하는 방법을 모르겠습니다.

:silent !<command>

뒤에 공백을 포함해야합니다. silent


3
안타깝게도 나에게별로 도움이되지는 않습니다. 화면이 엉망이되어 Ctrl-L을 눌러야합니다. 스페이스를 누르는 것보다 훨씬 더 성가신 일입니다.
Johan Kotlinski

1
그래도 내 grep 스크립트를 위해 일했습니다!
Mikko Rantanen

5
아래 설명자 (명령 끝에 <CR> 추가를 제안한 사람)와 함께 무음 사용시 추가 <Cl>을 추가 할 수 있으므로 수동으로 누르지 않아도됩니다. 그러면 화면에서 잘 작동합니다.
Victor Farazdagi 2011 년

4
: silent! 명령을 사용하고 : redraw! 이후-나는 당신이 머물고 싶은 화면에 무언가를 할 수있는 스크립트 때문에 자동으로 이것을하지 않는다고 생각합니다. 예를 들어, 시계 나 다른 상태 모니터링 일 ... 그저 추측
osirisgothra

2
그래 .. 나도 화면을 엉망으로 만든다. :redraw!옵션을 해결합니다. 이중 <cr>은 아마도 유사합니다. 덜 복잡
alpha_989


28
:help hit-enter

1
:help hit-enter"Press Enter ..."프롬프트에 대해 상당히 유용한 배경 정보를 제공 하기 때문에 누군가이 답변에 투표 한 이유가 궁금 합니다. 설명할까요?
cjs

38
': help hit-enter'의 어떤 정보가 질문에 답합니까? 찾을 수 없습니다.
Johan Kotlinski

1
셸 아웃하기 전에 모두 쓰기 명령에서 "Press Enter"프롬프트를 얻을 수 있습니다. <code> hit-enter </ code>가 링크하는 <code> shortmess </ code> 아래의 정보는이 경우에 유효합니다. 그러나 당신이 얻는 프롬프트는 폭격에서 나온 것이므로 Wergan의 제안이 올바른 것입니다. <code> : help : silent </ code>에서 언급했듯이 "외부 명령에 이것을 사용하면 화면이 엉망이 될 수 있습니다. 정리하려면 | CTRL-L |을 사용하십시오." 명령에 : redraw 또는 Ctrl-L을 추가하여 수정할 수 있습니다. 아니면 이미하고있는 두 번의 수익을하세요.
눈에 띄는 컴파일러

나를 위해 그것은 set hl ( :highlight) 습니다. hlsearch누가 진짜 지름길인지에 대한 지름길로 잘못 사용했습니다 hls. 하나의 s문제 :

1
@JohanKotlinski theset nomore
Tinmarino


18

이것은 자동으로 외부 프로그램을 실행하면 텍스트 모드 vim에서 화면이 엉망이되는 문제를 처리 한 방법입니다 (내 경험상 gvim은이 문제를 겪지 않습니다).

command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'

일반 자동 명령 대신 사용하십시오.

:Silent top

13

vimrc 파일 의 구문 오류 일 수 있습니다.


5
이. 내가 사용했던 set number다음과 set syntax내의 .vimrc 파일에 바로 아래. set syntaxVim을 제거하면 더 이상 메시지가 표시되지 않습니다.
piperchester

1
@piperchester 작동했습니다! 수많은 제안을 시도했지만 이것 만이 효과가있었습니다. 감사합니다 :)
폴 에반스

vim을 업데이트하고 문제가 해결되었습니다. 하지만 사람들은 :message무슨 일이 일어나고 있는지 알아 내기 위해 타이핑 을 할 수 있다고 생각 합니다.
NanoNova

네. 나는 줄이 있었다 set syntax. 로 교체 set syntax=on하고 문제를 해결합니다.
McSuperbX1

7

anthony의 대답은 저를 올바른 장소로 데려 갔고 많은 메시지에서 멈추지 않도록 gvim을 구성 할 수있었습니다. 내 gvimrc 파일
에 set shortmess=aoOtI을 추가했습니다 .
에서 제공하는 도움말 페이지에 설명되어 있습니다 :help shortmess.
문자는보고 싶지 않거나 입력 중지 를 피하기 위해 vim이 자르기를 원하는 메시지 클래스를 의미 합니다.
나는 columns=130gvimrc에서 넓은 초기 창을 설정하여 이전에 이것을 관리 했기 때문에 메시지가 오버플 로 되고 귀찮고 피곤하며 Enter 키를 누를 필요가 없습니다.


6

이것이 "Enter Enter"없이 까다로운 시나리오에서 외부 명령을 실행하는 방법입니다. 와 달리 :silent여전히 명령 출력을 볼 수 있습니다.

명령 줄

:exe ":!<command>" | redraw

스크립트 / 기능

exe ':!<command>' 
redraw

매핑 <expr>

map <expr> <F5> ":exe ':!<command>'\n:redraw\<CR>"

<expr>함수를 호출하는 매핑

map <expr> <F5> MyFoo()
fu! MyFoo()
    return ":exe ':!<command>' | redraw\<CR>"
endf

어떤 식 으로든 재사용 할 수 있습니까? F5 키를 누르면 문자열이 호출됩니다<command>
ashrasmun

1
<command>실제 외부 명령으로 대체됩니다. 예 :map <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
svlasov

4

당신이 사용할 수있는:

call feedkeys(" ")

예를 들면 :

function! Interactive_Questions()
    echo "Question 1:"
    let response1 = getchar()
    echo "Question 2:"
    let response2 = getchar()

    " Do something

    " Without the next line, you would have to hit ENTER,
    " even if what is written (the questions) has no interest:
    call feedkeys(" ")
endf

이 답변에 감사드립니다! 나열된 다른 많은 답변과 달리 빠르고 쉽고 실제로 내 개인 사례에 효과적입니다.
ab5tract

3

화면 지우기 전에 다시 그리기도 작동합니다. 내가 가진 것은 다음과 같습니다.

exe 'ls'  
exe 'b4'  "This redraws, so the Prompt is triggered

그러나 이것은 프롬프트를 트리거하지 않습니다.

exe 'ls'  
redraw  
exe 'b4'

함수 내 특정 위치에서 프롬프트를 프로그래밍 방식으로 제거하기 때문에 도움이되었습니다. redraw문제를 해결하기 만하면 됩니다. 원래 메시지와 프롬프트가 사라지는 사이에 사용자 입력을 받아들이고 싶었 기 때문에 다른 솔루션은 적합하지 않았습니다.
Daniel Andersson

1

비슷한 문제가 있지만 여러 파일에서 동일한 문자열을 바꾸기 위해 argdo를 실행할 때 예를 들어,

 argdo %s/something/Something/eg|update

계속해서 페이지를 눌러야했습니다.

많은 프롬프트 대신 최종 프롬프트 만 있도록 스크립트를 실행하기 전에 다음 옵션을 설정할 수 있습니다.

:set nomore

그것이 대답이었습니다. :set nomore, 나쁜 핥아 아직 끝났습니다. 또한 :h help hit-enter@anthony
Tinmarino

1

내 경우 (자동 명령) set shortmess+=F가 트릭을 수행했습니다.

: h shortmess
F는 파일을 편집 할 때 파일 정보를 제공하지 않습니다.:silent


0

디렉토리에 대한 쓰기 권한이없는 디렉토리에있는 파일을 저장하는 경우 이런 일이 발생합니다. 디렉토리에서 chmod 777을했는데 (이미 파일 자체에 대한 쓰기 권한이 있습니다) "Press Enter"메시지가 더 이상 나타나지 않습니다.


0
  • 키 맵을 사용하는 경우 명령 끝에 몇 개를 더 추가하면 삶이 훨씬 더 쉬워 질 수 있지만 일반적으로 두 번이면 충분합니다.
  • 그러나 vim 명령 줄에서 명령을 실행하는 경우. 그럼 좀 까다 롭습니다. silent실제 명령 앞에 키워드 를 추가 할 수 있습니다 . 명령이 실행 된 후 자동으로 vim 창으로 돌아갑니다. 그러나 redrawNERD_Tree와 같은 일부 창을 다시 그려야하므로 수동으로 실행 해야합니다.

    • 이 경우 vim 도움말 문서의 지침을 따르십시오.

      적중 입력 프롬프트 수를 줄이려면 다음을 수행하십시오.

      • 'cmdheight'를 2 이상으로 설정하십시오.
      • 'shortmess'에 플래그를 추가합니다.
      • 'showcmd'및 / 또는 'ruler'를 재설정합니다.
    • 이 링크 는 다른 방법을 제공합니다. 이것을 vimrc 파일에 넣으십시오.

      명령! -nargs = 1 침묵
      \ '침묵!'실행 .
      \ | '다시 그리기!'
      

그런 다음 :Silent command일반 명령처럼 사용할 수 있습니다 .


0

내 쪽에서 해결책은 명령 체인에서 더 자주 사용silent 하는 것이 었 습니다 .

특히 이전 .vimrc에는 :

nnoremap M :silent make\|redraw!\|cc<CR>

다음으로 변경되었습니다.

nnoremap M :silent make\|silent redraw!\|silent cc<CR>

이전에는 "Press Enter"가 항상 표시되지는 않았지만 성가 시게 자주 나타났습니다. 추가 silents는 이것을 수정했습니다. (그것은 모양 silent에 필요하지 않은 redraw!것처럼 :cc은 "Enter 키를 누릅니다"메시지가 발생합니다.)

이 변경 사항은의 출력을 더 이상 표시하지 않는 단점이 :cc있으므로 오류가 무엇인지 추측해야합니다. 작은 팅겨 이 해결합니다

nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>

이렇게하면 오류 QuickFix 목록 (의 출력 make)이 자동으로 나타나고 vim-magic에 의해 오류가 없으면 사라집니다.

참고 :

M매핑의 동기는 M일반 모드에서 다음을 수행하는 것입니다.

  • 편집을 저장하십시오 ( 어쨌든 make모든 것이 git통제 하에 있을 때 )
  • 호출 make
  • 첫 번째 오류 또는 경고로 바로 이동합니다.

나의 Makefile s는 일반적으로 구성되어 1 초 만에 완료됩니다.

약간의 조정으로 이것은 비C 유형 워크로드 .

.vimrc추가

set efm+=#%t#%f#%l#%c#%m#

이를 통해 (디스플레이 오류)에 vim대해 다음과 같은 메시지를 해석 할 수 있습니다 :cc.

#E#file#line#column#message#
#W#file#line#column#message#
#I#file#line#column#message#

( 마법에 근거한 Errors, Warnings, Info vim)

Python 스크립트에 사용하는 방법의 예 입니다. (죄송합니다. 여기에는 사본이 없습니다. 다른 이야기입니다.)


0

E303으로 인해 오류가 발생한 경우 .vimrc파일에 임시 디렉토리 생성 문제가 해결 될 수 있습니다.

파일을 연 후 다음을 작성하고 입력하십시오.

:messages

오류가 있으면 메시지가 표시됩니다.

E303 (오류 303) ""{filename} "에 대한 스왑 파일을 열 수 없습니다. 복구가 불가능합니다."가 표시되는 경우 시스템에서 스왑 파일을 복구하려는 이전 시도 (대부분 손실되었거나 존재하지 않음)가 있음을 나타낼 수 있습니다. .

이 문제를 해결하려면 파일에 임시 디렉토리를 지정 .vimrc하십시오.

.vimrc파일 위치를 찾으려면 다음을 입력하고 입력하십시오.

$ locate .vimrc
/root/.vimrc

파일 열기 $ vi .vimrc

다음을 파일 끝에 추가하십시오.

set directory=.,$TEMP

저장 및 닫기 :wq

마지막으로 다음을 사용하여 프로필을 다시로드합니다.

$ . /etc/profile

VI로 파일을 열어보십시오. 문제가 해결 될 것입니다.


0

gvim설정 한 경우 guioptions+=!(추가 !guioptions),이 때문에 그이다. 이 옵션 ( !) gvim은 외부 터미널에서 일부 명령을 실행합니다 (색상 및 기타 여러 기능과 같은 더 많은 기능을 지원함).

사용하여 시도하고 :set guioptions-=i이것이 작동하는지 확인할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.