외부 명령을 실행 한 후 나타나는 "계속하려면 Enter 키를 누르거나 명령을 입력하십시오"프롬프트를 비활성화하는 방법이 있습니까?
편집 : 해결 방법을 찾았 <CR>습니다. 내 .lvimrc의 바로 가기에 추가 항목 을 추가하십시오 .
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
더 좋은 아이디어가 있습니까?
외부 명령을 실행 한 후 나타나는 "계속하려면 Enter 키를 누르거나 명령을 입력하십시오"프롬프트를 비활성화하는 방법이 있습니까?
편집 : 해결 방법을 찾았 <CR>습니다. 내 .lvimrc의 바로 가기에 추가 항목 을 추가하십시오 .
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
더 좋은 아이디어가 있습니까?
답변:
하나의 명령에 대해 전역 적으로 수행하는 방법을 모르겠습니다.
:silent !<command>
뒤에 공백을 포함해야합니다. silent
:redraw!옵션을 해결합니다. 이중 <cr>은 아마도 유사합니다. 덜 복잡
한 가지 해결 방법을 찾았습니다 <CR>
. map 명령에 추가 를 추가합니다 .
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
:help hit-enter
:help hit-enter"Press Enter ..."프롬프트에 대해 상당히 유용한 배경 정보를 제공 하기 때문에 누군가이 답변에 투표 한 이유가 궁금 합니다. 설명할까요?
set nomore
이것은 자동으로 외부 프로그램을 실행하면 텍스트 모드 vim에서 화면이 엉망이되는 문제를 처리 한 방법입니다 (내 경험상 gvim은이 문제를 겪지 않습니다).
command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'
일반 자동 명령 대신 사용하십시오.
:Silent top
vimrc 파일 의 구문 오류 일 수 있습니다.
set number다음과 set syntax내의 .vimrc 파일에 바로 아래. set syntaxVim을 제거하면 더 이상 메시지가 표시되지 않습니다.
:message무슨 일이 일어나고 있는지 알아 내기 위해 타이핑 을 할 수 있다고 생각 합니다.
set syntax. 로 교체 set syntax=on하고 문제를 해결합니다.
anthony의 대답은 저를 올바른 장소로 데려 갔고 많은 메시지에서 멈추지 않도록 gvim을 구성 할 수있었습니다. 내 gvimrc 파일
에 set shortmess=aoOtI을 추가했습니다 .
에서 제공하는 도움말 페이지에 설명되어 있습니다 :help shortmess.
문자는보고 싶지 않거나 입력 중지 를 피하기 위해 vim이 자르기를 원하는 메시지 클래스를 의미 합니다.
나는 columns=130gvimrc에서 넓은 초기 창을 설정하여 이전에 이것을 관리 했기 때문에 메시지가 오버플 로 되고 귀찮고 피곤하며 Enter 키를 누를 필요가 없습니다.
이것이 "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
<command>
<command>실제 외부 명령으로 대체됩니다. 예 :map <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
당신이 사용할 수있는:
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
화면 지우기 전에 다시 그리기도 작동합니다. 내가 가진 것은 다음과 같습니다.
exe 'ls'
exe 'b4' "This redraws, so the Prompt is triggered
그러나 이것은 프롬프트를 트리거하지 않습니다.
exe 'ls'
redraw
exe 'b4'
redraw문제를 해결하기 만하면 됩니다. 원래 메시지와 프롬프트가 사라지는 사이에 사용자 입력을 받아들이고 싶었 기 때문에 다른 솔루션은 적합하지 않았습니다.
비슷한 문제가 있지만 여러 파일에서 동일한 문자열을 바꾸기 위해 argdo를 실행할 때 예를 들어,
argdo %s/something/Something/eg|update
계속해서 페이지를 눌러야했습니다.
많은 프롬프트 대신 최종 프롬프트 만 있도록 스크립트를 실행하기 전에 다음 옵션을 설정할 수 있습니다.
:set nomore
:set nomore, 나쁜 핥아 아직 끝났습니다. 또한 :h help hit-enter@anthony
그러나 vim 명령 줄에서 명령을 실행하는 경우. 그럼 좀 까다 롭습니다. silent실제 명령 앞에 키워드 를 추가 할 수 있습니다 . 명령이 실행 된 후 자동으로 vim 창으로 돌아갑니다. 그러나 redrawNERD_Tree와 같은 일부 창을 다시 그려야하므로 수동으로 실행 해야합니다.
이 경우 vim 도움말 문서의 지침을 따르십시오.
적중 입력 프롬프트 수를 줄이려면 다음을 수행하십시오.
- 'cmdheight'를 2 이상으로 설정하십시오.
- 'shortmess'에 플래그를 추가합니다.
- 'showcmd'및 / 또는 'ruler'를 재설정합니다.
이 링크 는 다른 방법을 제공합니다. 이것을 vimrc 파일에 넣으십시오.
명령! -nargs = 1 침묵 \ '침묵!'실행 . \ | '다시 그리기!'
그런 다음 :Silent command일반 명령처럼 사용할 수 있습니다 .
내 쪽에서 해결책은 명령 체인에서 더 자주 사용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 스크립트에 사용하는 방법의 예 입니다. (죄송합니다. 여기에는 사본이 없습니다. 다른 이야기입니다.)
E303으로 인해 오류가 발생한 경우 .vimrc파일에 임시 디렉토리 생성 문제가 해결 될 수 있습니다.
파일을 연 후 다음을 작성하고 입력하십시오.
:messages
오류가 있으면 메시지가 표시됩니다.
E303 (오류 303) ""{filename} "에 대한 스왑 파일을 열 수 없습니다. 복구가 불가능합니다."가 표시되는 경우 시스템에서 스왑 파일을 복구하려는 이전 시도 (대부분 손실되었거나 존재하지 않음)가 있음을 나타낼 수 있습니다. .
이 문제를 해결하려면 파일에 임시 디렉토리를 지정 .vimrc하십시오.
.vimrc파일 위치를 찾으려면 다음을 입력하고 입력하십시오.
$ locate .vimrc
/root/.vimrc
파일 열기 $ vi .vimrc
다음을 파일 끝에 추가하십시오.
set directory=.,$TEMP
저장 및 닫기 :wq
마지막으로 다음을 사용하여 프로필을 다시로드합니다.
$ . /etc/profile
VI로 파일을 열어보십시오. 문제가 해결 될 것입니다.
에 gvim설정 한 경우 guioptions+=!(추가 !로 guioptions),이 때문에 그이다. 이 옵션 ( !) gvim은 외부 터미널에서 일부 명령을 실행합니다 (색상 및 기타 여러 기능과 같은 더 많은 기능을 지원함).
사용하여 시도하고 :set guioptions-=i이것이 작동하는지 확인할 수 있습니다.
set dir=$TEMPvimrc 에 넣는 것 입니다. 이것은 vim에게 임시 파일에 대해 올바른 임시 폴더를 사용하도록 지시합니다. 그러면 오류가 수정되고 "Enter를 누르십시오"프롬프트가 제거됩니다.