2

SublimeText에서 JavaScript 화살표 함수 스 니펫을 만들려고합니다. 열린 type을 입력하면 사용할 수 있어야합니다 : (. 내가 이것을 만들 탭으로 할 수 있도록하려면 :SublimeText 사용자 정의 스 니펫을 트리거 할 때 자동 대응 괄호를 생략하거나 삭제할 수 있습니까?

자동 매치로
() => {} 

가 (기능 내가 일반적으로 같은)를 활성화, 나는이 문제를 방지하는 방법을 알아낼 수 없습니다 : 여기

() => {}) 

인 자동 일치 문제를 제외하고 위대한 작품을 내가 지금까지 가지고있는 코드 :

<snippet> 
    <content><![CDATA[ 
(${1}) => {$2} 
]]></content> 
    <tabTrigger>(</tabTrigger> 
    <scope>source.js</scope> 
</snippet> 

답변

2

조각 만 텍스트를 삽입하거나 선택한 텍스트를 대체 할 수 - 그들은 심지어 다음에, 문서의 다른 텍스트를 수정할 수 없습니다 텍스트 caret 나는 당신이 원하는 것을 달성하기위한 가장 좋은 방법은 ()을 눌렀을 때 기본 auto_match_enabled 동작 (또한 키 바인딩 임)보다 우선하는 키 바인딩을 사용하고, 스 니펫을 삽입하기 위해 키 바인딩을 얻는 것이라고 생각합니다. 별도의 .sublime-snippet 파일의 필요성

{ 
    "keys": ["(", "tab"], "command": "insert_snippet", "args": { "contents": "(${1}) => {$2}" }, "context": 
    [ 
     { "key": "selector", "operator": "equal", "operand": "source.js" } 
    ] 
}, 

참고 여전히 명령 팔레트 Snippet: 옵션에 표시하기 위해 조각을 원한다면, 당신이 어떤 부정적인 영향없이 .sublime-snippet 파일을 유지할 수 있습니다, -. 키 바인딩이 우선합니다 스 니펫에 정의 된 탭 트리거를 통해.

+0

작동합니다! 고맙습니다. 스 니펫이 기존 콘텐츠를 삭제할 수 없다고 가정 할 때 삽입 만 하시겠습니까? 또한이 API가 문서화되었는지 알 수 있습니까? 나는 여기서 "상황"열쇠에서 일어나는 일을 따르지 않을 것이다. (그러나 나는 또한 내 자신을 미래에 건설 할 수 있기를 바란다.) – user6689821

+1

기존 내용을 삭제하는 스 니펫에 가장 가까이 접근 할 수있는 방법은 키 누름의 결과로 확장 한 다음 키를 누르기 전에 텍스트를 선택하는 것과 같은 경우에이를 사용하여 선택을 대체하는 것입니다. 스 니펫. 이 경우 스 니펫에서 '$ SELECTION'이라는 특수 변수를 사용할 수 있습니다. 또한 매크로를 사용하여 (키 누름에 대한 응답으로) 먼저 텍스트를 삭제하고 스 니펫을 확장하는 명령을 실행할 수 있습니다. – OdatNurd

+1

또한 키 바인딩의 컨텍스트 사용에 대한 설명서도 사용할 수 있습니다. Sublime과 함께 제공되는 일련의 컨텍스트가 있지만 플러그인 코드를 사용하여 필요한 경우 사용자 고유의 컨텍스트를 구성 할 수 있습니다. http://docs.sublimetext.info/en/latest/reference/key_bindings.html – OdatNurd