Vim JavaScript 코드 접기


2

JavaScript 용 Vim에서 코드 폴딩을 설정하려고 시도했지만 기본값이 올바르게 작동하지 않습니다. 나는 Vim에 대한 경험이 거의 없으며 도움 파일을 이해하는 데 어려움을 겪고있다.

문제를 만드는 JavaScript 코드는 다음과 같습니다.

var x = {};

x.prototype = (function () {
    // Variable declarations...
    var y;

    // Other content...

    y = (function () {
        // Stuff...
    }());

    // Other content continues... eg:
    return {
        // Other stuff...
    };
}());

접을 때 y = (function () {}());, 다음과 같이 보입니다.

var x = {};

x.prototype = (function () {
    // Variable declarations...
    var y;

    // Other content...

    y = (function () {----------------------------------...

나머지 함수가 사라지는 방법에 유의하십시오! 실제로 이렇게 보일 것입니다 :

var x = {};

x.prototype = (function () {
    // Variable declarations...
    var y;

    // Other content

    y = (function () {----------------------------------...

    // Other content continues... eg:
    return {
        // Other stuff...
    };
}());

위에서 말했듯이 나는 구문 파일로 놀아 보려고했지만 폴딩 만 부러 뜨렸다.

편의를 위해 다음은 JavaScript 구문 파일의 코드 접기 섹션입니다.

if exists("javaScript_fold")
    syn match   javaScriptFunction  "\<function\>"
    syn region  javaScriptFunctionFold  start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend

    syn sync match javaScriptSync   grouphere javaScriptFunctionFold "\<function\>"
    syn sync match javaScriptSync   grouphere NONE "^}"

    setlocal foldmethod=syntax
    setlocal foldtext=getline(v:foldstart)
else
    syn keyword javaScriptFunction  function
    syn match   javaScriptBraces       "[{}\[\]]"
    syn match   javaScriptParens       "[()]"
endif

syn sync fromstart
syn sync maxlines=100

3 가지 질문이 있습니다.

  1. 코드 폴딩을 수정할 수 있습니까? ~/.gvimrc?
  2. 코드 접기는 어떻게 수정합니까?
  3. 접힌 코드를이 양식으로 만들려면 어떻게해야합니까? y = (function () { ... }());?

답변:


1

일을 간단하게하기 위해 javascript.vim 파일의 접기 부분을 다음과 같이 변경하십시오 :

syn region javaScriptFunctionFold  start="{" end="}" transparent fold

앞으로 몇 주 동안 전체 파일을 정밀 검사하여 ECMA5 및 다양한 HTML5 API 및 업데이트의 최신 변경 사항을 확인하려고 노력할 것입니다. 그러나이 패치는 중간에 문제를 해결해야합니다.


1
그것에 대한 @ScottShattuck 업데이트? 좋은 JS 폴딩 아디디가 있습니까?
MaiaVictor

2

내가 발견했다 이 대체 구문 파일 잘 작동하려면 복잡한 프로토 타입 객체를 접을 수도 있습니다. 특히 Mozilla와 Dojo 프로젝트에서 일반적으로 사용되는 JS를 대상으로 했으므로 현재 수행중인 작업과 매우 유사합니다.


링크 된 기사의 컨텍스트를 제공하십시오.
bytebuster

2
@bytebuster,이게 어때?
Philipp Kewisch

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