2009-03-06 2 views
62

Vim에서 인라인 자바 스크립트를 들여 쓰기 할 수 없습니다. 다음을 고려하십시오 :Vim에서 잘못된 인라인 자바 스크립트 들여 쓰기를 수정하려면 어떻게해야합니까?

$(document).ready(function() { 

    // Closing brace correctly indented 
    $("input").focus(function() { 
     $(this).closest("li").addClass("cur-focus"); 
    }); // <-- I had to manually unindent this 

    // Closing brace incorrectly indented 
    $("input").blur(function() { 
     $(this).closest("li").removeClass("cur-focus"); 
     }); // <-- This is what it does by default. Argh! 

    }); 

Vim은 두 번째 경우에 표시된 닫는 중괄호를 자동으로 들여 쓰기를 주장하는 것처럼 보입니다. 전체 파일을 다시 들여 쓰면 똑같습니다. 첫번째 JS indenting 스타일을 사용하여 자동 들여 쓰기를 얻으려면 어떻게해야합니까?

답변

80

프레스턴 Koprivica에 의한 사용 JavaScript Indent: Javascript indenter (HTML indent is included). oligofren에서 헤드 업을 보내 주셔서 감사합니다.

+0

그냥 답장에 Vim 구문 파일 :) 누락되었습니다. :) – m42

+0

나는 자바 스크립트 들여 쓰기가 모두 고의적 인 이유에 대해 궁금해했다. – FurtiveFelon

+0

필자는 indendation 문제를 제공된 OOP 자바 스크립트 들여 쓰기, 특히 jQuery 코드와 관련된 문제점을 제거했다. 작동 압흔 플러그인에 대한 oligofren의 대답을보십시오. – Markus

5

이러한 설정 중 일부 조합은 VIMRC 파일에 있어야합니다.

syntax on 
set syn=auto 
set showmatch 
filetype on 
filetype plugin on 
filetype indent on 
set tabstop=4 
set softtabstop=4 
set shiftwidth=4 
set expandtab 
+0

제안에 대한 많은 감사의 말을 전하며, 이미 이러한 설정을 대부분 받았으므로 도움이되지 않습니다. –

+0

vim에서 코드에있는 해당 줄을 건너 뛰기 전까지 가끔씩 중괄호가 하나의 탭 멈춤으로 바뀌는 것을 확인합니다. 나는 * "filetype Plugin on on & filetype indent on"은 그것을 유도하기로되어 있다고 생각했다. javascript 용 구문 파일이 있습니까? (JS로 작업하지 않아서 필요하지 않은지 모르겠다.) – m42

+0

이 설정 중 일부가 없으면 Koprivica 스크립트가 작동하지 않습니다. –

0

구문 파일의 자바 스크립트에 대한 들여 쓰기가 좋으면 블록을 시각적으로 강조 표시하고 =를 누릅니다. 이것은 java에서 작동하기 때문에 자바 스크립트에 대해 반쯤 괜찮은 것을 기대할 수 있습니다. 결과는 아마도 tabstop, expandtab 및 아마도 shiftwidth의 설정에 따라 달라집니다.

gq도 유용합니다. 줄을 들여 쓰지 않고 서식을 지정합니다.

+0

고마워요. 일반적으로 전체 파일 들여 쓰기에 사용하는 콤보는 gg = G입니다. 내 문제는 내가 이것을했을 때, JS 제대로 들여 쓰지 않았어. 위의 내 대답은 문제를 해결했습니다. –

3

나는이 같은 문제가있었습니다.

http://www.vim.org/scripts/script.php?script_id=1840

그것은

추가 보너스로 http://www.vim.org/scripts/script.php?script_id=1839

, 나는 자바 스크립트 블록을 매우 귀여운 것이 들여 쓰기 스크립트를 쓴 IndentAnything 플러그인이 필요합니다 이것은 모든 자바 스크립트 들여 쓰기 스크립트의 최고입니다 . 그것은 기본적으로 기본 HTML 압자 (그리고 자바 스크립트 블록 내에서 IndentAnything 일)

http://gist.github.com/371902

+0

다음과 같은 두 가지 수준의 들여 쓰기 (function() {.github/bibucket repo가없는 극단적 인 점을 잃는 것과 같이 대부분의 것들이 "wrong"처럼 보입니다.) –

+0

대부분의 upvoted 응답보다 나은 반면 동의합니다. 여전히 좋지 않습니다. – Drachenfels

84

가장 포괄적이고 버그 무료 자바 스크립트 들여 쓰기 스크립트 the one by Preston Koprivica 인을 사용합니다. 제안 된 답변에있는 소위 OOP 스크립트는 심각한 버그가 있으며 대괄호가있는 코드를 올바르게 들여 쓰지 않습니다.

$(function() { 
    // only one level of indentation, not two 
}); 

이 스크립트는 나를 위해 잘 작동 : 종종 제대로 jQuery를에 사용되는 폐쇄 구문 포맷하지 않음 위에서 언급 한

+3

이 파일은 js- 파일 (jQuery 코드로 주로 구성되어 있습니다. 여러 줄의 중괄호와 중괄호가 같은 줄에있는 경우가 많습니다)을 처리하는 유일한 사람입니다. – Markus

+1

참고, 필자는 얼마 전 프레스톤 Koprivica의 스크립트 . 포인터에 대한 oligofren 덕분에. –

+1

참고 : 내 vim 구성에서 뭔가가 프레스톤의 스크립트의'1.0' 버전이 새 줄에 들여 쓰기가 적절하지 않습니다. 버전'b3.0'은 잘 작동합니다. '1.0', 대신'b3.0'을 시도하십시오 –

17
+5

고마워! 참고로 github에서 버전을 가져와야합니다. 훨씬 더 최신 버전입니다. – DMan

+2

이것은 나를 위해 더 높은 투표 한 것보다 훨씬 잘 작동합니다. 감사. –

+0

슬프게도,이 들여 쓰기 스크립트는 블록의 여는 중괄호를 개행에 넣는 것과 같은 간단한 경우 실패하고 사용자 탭 확장 설정을 고려하지 않습니다. 예를 들어 4로 확장하도록 구성한 경우 3 개의 들여 쓰기가 적용됩니다. – aphax

10

이러한 답변의 대부분은 2009 년과 출신을, 솔직히, 시대에 뒤 떨어진다. 아직 Vundle를 사용하기 시작하지 않은 경우 Preston's script.

설치가 조금 더 복잡보다

vim-javascript 훨씬 더 최근하고 최신이지만,의 문제에서 고통을하지 않는 것 대안.

+0

'vim-javascript'는 html 파일에 포함 된 javascript를 지원하지 않습니다 (제가 말할 수있는 한). –

+0

이것은 내가 만났던 최고의 자바 스크립트 플러그인입니다. 2017 년 여전히 좋은 –

1

여기 누군가가 오는 경우 vim-javascript에 의해 panglosshttps://github.com/pangloss/vim-javascript이 나에게 도움이되었습니다. 예 : Vim 7.4. 그리고 oligofren과 Charles Roper의 위의 솔루션은 그렇지 않았습니다.

관련 문제