Vim의 빠른 수정 기능을 어떻게 사용합니까?


125

저는 꽤 새로운 Vim 사용자이며 학습 곡선이 상당히 가파르다는 것을 발견했습니다 (적어도 저에게는). JavaScriptLint 오류 검사를 위해이 vim 스크립트 를 설치 했습니다 . 버퍼를 저장하면 vim의 quickfix 창에 오류가 표시됩니다.

그러나 다음에 무엇을해야할지 모르겠습니다. 모든 오류를 어떻게 '스크롤'합니까? Quickfix '창'을 어떻게 닫습니까? 코드를 변경 한 후 오류를 확인하려면 어떻게해야합니까?

vim quickfix 문서를 살펴 보았지만 명령의 양이 너무 많아서 원하는 것을 찾을 수없는 것 같습니다. 어떤 도움을 주시면 감사하겠습니다.

부수적 인 질문 : javascriptlint가 .html 파일에있는 코드에 대한 js 오류를 확인하도록하는 방법이 있습니까?

감사!

답변:


148

당신이 말했듯이 빠른 수정을위한 많은 명령 이 있지만, 나는 그것들 중 작은 부분만을 사용하는 경향이 있습니다.

:copen " Open the quickfix window
:ccl   " Close it
:cw    " Open it if there are "errors", close it otherwise (some people prefer this)
:cn    " Go to the next error in the window
:cp    " Go to the previous error in the window
:cnf   " Go to the first error in the next file
:.cc   " Go to error under cursor (if cursor is in quickfix window)

나는 이것을 사용하는 경향이 :make:vimgrep나는 자바 스크립트 보풀이 검사기에 대해 언급 할 수 있도록, 그러나 이것은 시작하는 당신에게 무언가를 제공해야합니다.

JavascriptLint의 일반적인 사용과 관련하여 저는 자바 스크립트 프로그래머는 아니지만 스크립트가 "JavascriptLint"라는 함수를 노출하는 것처럼 보이므로 수동으로 호출하려는 경우 :call JavascriptLint(). 그러나 파일의 디스크 복사본에서 작동하므로 먼저 저장해야합니다. 명령 줄 jsl이 html 파일에서 작동 하는 경우에만 html 파일에서을 사용 :call JavascriptLint()하여 내부 javascript를 확인할 수 있습니다. 다음을 수행 할 수도 있습니다.

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

자동화합니다. 에서 jslhtml 파일을 지원하지 않는 경우 (응용 프로그램을 패치하거나 작성자에게 변경을 요청하지 않음) 아마도 손실 된 원인 일 수 있습니다.


감사합니다. 이러한 명령은 좋은 시작입니다. 조금만 플레이하고 작동 방식에 익숙해 져야합니다. : cn을 사용하여 qf 창에서 오류로 이동하면 qf 창을 종료하지 않고 코드가있는 창으로 이동할 수 있습니까? 오류가있는 줄로 이동할 수 있습니까? 그리고 : call 사용 제안이 작동하지만 내가 원하는 것이 아닌 <script src> 링크를 따릅니다.
hora 09.11.17

@hora : :cnqf 창을 닫으면 안되지만 오류가있는 창으로 전환됩니다. 이것이 "점프"라는 뜻입니까? 당신은 신속로 다시 전환 할 수 있습니다 Ctrl-W p또는 :wincmd p당신이 할 수 있도록, :command! CN :cn | wincmd p<CR>또는 그 (검증되지 않은) 같은. 이렇게 :CN하면 빠른 수정 창을 벗어나지 않고 다음 오류로 이동 하는 명령 이 제공 됩니다. 또는 :au BufWinEnter quickfix nmap <buffer> <Enter> :.cc | wincmd p<CR>(다시 테스트되지 않은) 같은 작업을 수행하고 Enter 키를 사용하여 빠른 수정 창에서 전환하지 않고 오류를 선택할 수 있습니다.
DrAl

1
초보자에게 "당신은 또한 할 수 있습니다 : 그것을 자동화하기 위해 'somecodehere'"는 그다지 의미가 없습니다. 이는 표시된 코드 줄이 ~ / .vimrc (Windows AFAIK의 _VIMRC)에 배치되어야하며 파일이 저장 될 때마다 VIM의 다음 시작부터이 명령이 호출된다는 것을 의미합니다. 권리?
Беров

63

빠른 수정 목록 (또는 해당 문제에 대한 위치 목록)을 탐색하는 가장 쉬운 방법 unimpaired플러그인 입니다.

quickfix 창이 채워지면 [q]q앞뒤 (각각)에 quickfix 목록에서 이동합니다. [Q그리고 ]Q시작과 끝으로 이동 (만 목록에서 하나 개의 항목이있는 경우 특히 유용합니다,이 차종은 불평 정력 [q]q). 따라서 워크 플로는 다음과 같습니다.

  1. 빠른 수정 목록을 채우는 명령을 실행하십시오.
  2. [Q첫 번째 항목으로 이동하려면 입력 하세요.
  3. 후속 항목을 스크롤 (있는 경우) [q]q

Syntastic을 사용하는 경우 빠른 수정 목록 대신 위치 목록이 표시됩니다. 문제 없어요; 단지 사용 [L, ]L, [l,와 ]l같은 방법으로한다.

unimpaired- 너무 다른 편리한 매핑의 부하를 가지고 [e]e"거품"라인 위, 아래, [<Space>그리고 ]<Space>, 나는 아무도 전에 여기 언급되지 놀랐다 등, 위의 빈 줄을 삽입하고 아래 2009 년에 질문을 받았지만 2010 년 1 월까지는 존재하지 않았기 때문일 것입니다.


27

.vimrc 파일에 다음 두 줄을 넣으십시오.

map <C-j> :cn<CR>
map <C-k> :cp<CR>

이제 ctrl-j 및 ctrl-k를 사용하여 오류를 탐색 할 수 있습니다. 이는 표준 아래로 및 위로 동작 명령 j 및 k를 모방합니다.


1
<c-j>가끔 잘못된 또는 전혀 작동하지 않는 경우는 <NL> // 쉬운 IST 같은 의미하기 때문에 사용하기 위해, (? 단말기가에 따라) <c-n><c-p>대신 // 그렇지 stackoverflow.com/questions/8304421/...를
엘리

나는이 같은 F8과 F9를 사용하기로 결정 noremap <F7> :cprevious<CR>하고 noremap <F8> :cnext<CR>.vimrc
Flimm

나는 이미 vim tmux navigator 를 사용하여 vim 분할과 tmux 창 사이를 탐색 하기 위해 <C-j><C-k>을 사용합니다 . 조합 및<C-M-j><C-M-k> 대안이 될 수 있습니다.
Paul Rougieux

24

당신은 또한 사용할 수 있습니다 :cc 2(또는 다른 번호)는 quickfix 창에서,이 경우에 두 번째 오류를 이동합니다. 함께 탐색 :cn, :cc 4등은 문제의 줄에 커서를 넣어 것입니다.


8

JavaScript 구문 검사를 통합하는 가장 좋은 방법은 Vim의 위치 목록 ( quickfix병행 ) 창을 사용하는 Syntastic Vim 플러그인을 사용 하는 것입니다 .

나는에 대한 답변을 서면으로 작성했습니다 이 질문이 질문 도하는 방법에 그것을, 플러스하는 방법을 설명하는 소스 코드 검색 / 태그 목록을 사용하여 빔을위한 지역 사회 중심의 jshint.com (방법은 IMO 더 나은 JSLint 이상이다) 및 Mozilla의 DoctorJS (이전 jsctags ).


8

어쩌면이 옵션이 질문이 작성 될 때 존재하지 않았다 (뭔가가 있기 때문에 자신을 또는 어쩌면 내가 당황하고있어 내 .vimrc이런 일이 있습니다)하지만 난을 얻을 때 Quickfix List, 난 그냥 그것을 이동 j하고 k다음 공격 <CR>(즉, 키를 입력) 파일의 해당 위치로 이동합니다.

그런 다음 Quickfix ListI로 돌아가려면 "창 아래로 이동"에 Ctrl+ W j를 입력 하면 돌아 갑니다.

마지막으로 작업이 끝나면 :q일반 창을 닫는 것처럼을 입력 합니다.


이것이 제가하고 싶은 일이지만 "변경할 수 없습니다. '수정 가능'이 꺼져 있습니다."라는 메시지가 표시됩니다.
rtf

1
Enter 키를 무시했을 수 있습니다. 예를 들어 nmap <CR> o<Esc>, 그래서 일반 모드에서 줄 바꿈을 추가 할 수 있습니다.
타비 Ilves

6

빠른 수정 창은 대부분 다른 vim 창과 같이 작동합니다. j는 한 줄, k는 한 줄, : cn은 다음 오류 / 경고로 이동합니다.

실험!


1
실험에 +1, 그것이 내가 모든 것을 배운 방법입니다.
호라

4

빠른 창을 열고 닫고 항목을 탐색하는 방법에 대한 @DrAl의 훌륭한 답변 외에도 다른 빠른 수정 탐색 명령 중 일부를 보여주는 이미지를 만들었습니다.

아래 3 개 파일의 각 그룹은 vimgrep의 빠른 수정 결과 세트를 나타냅니다. cnewer와 colder는 역사적인 결과 세트를 거치기위한 것입니다. 여기에 이미지 설명 입력

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