말에 중괄호 종료)는 if-statement 블록을 종료하고 }
끝으로 이동합니다. 감사.이 블록은 숭고한
답변
BracketHighlighter 플러그인은 기본적으로 ... 종류의이 기능을 제공 할 수 있습니다. 그 예를 들어 바로 가기 파일, Example.sublime-keymap
에서 바인딩 "오른쪽 브래킷으로 이동"예를 들어 키가 :
// Go to right bracket
{
"keys": ["ctrl+alt+super+down"],
"command": "bh_key",
"args":
{
"lines" : true,
"plugin":
{
"type": ["__all__"],
"command": "bh_modules.bracketselect",
"args": {"select": "right"}
}
}
},
유일한 문제는 호출 bracketselect
명령은 오른쪽 대괄호의 왼쪽로 커서를 이동한다는 것입니다 블록에서 완전히 탈출하기 위해 또 다른 키 누름이 필요합니다. 나는 그것이 당신이 원하는 것이라고 생각하지 않습니다.
걱정하지 마세요! 고맙게도 BracketHighlighter는 매우 직관적 인 플러그인 API를 제공하며, bracketselect
플러그인을 수정하여 대괄호로 묶은 블록 (기본적으로 bracketselect
과 동일)에서 탈출 할 수있는 명령을 만들 수 있지만 커서를 오른쪽으로 이동했습니다.은 왼쪽이 아닌 닫는 괄호이며 추가 인수가 필요하지 않습니다.
아직 설치하지 않은 경우 먼저 BracketHighlighter을 설치해야합니다.
{
"keys": ["tab"],
"command": "bh_key",
"args":
{
"lines" : true,
"plugin":
{
"type": ["__all__"],
"command": "bh_modules.blockescape"
}
}
},
I :
다음, blockescape.py을 저장 사용자 키 바인딩의 상단 (Preferences -> Key Bindings — User
)에이 항목을 추가, 그리고
Preferences -> Browse Packages... -> BracketHighlighter/bh_modules/blockescape.py
에 (링크 이제까지 죽으면 아래 참조) tab
을 확장 키와 함께 사용하는 것이 중요하기 때문에 tab
을 트리거 키로 사용하지 않는 것이 좋습니다. 물론 tab
을 사용하는 특별 context을 정의 할 수 있지만 그 것은 귀하에게 달려 있습니다. 경우
는 Github에서 여기에 플러그인 코드입니다, 지금 다운 : 내가 더 많거나 적은 플러그인 함께 해킹 때문에
import bh_plugin
import sublime
DEFAULT_TAGS = ["cfml", "html", "angle"]
class BlockEscape(bh_plugin.BracketPluginCommand):
def run(self, edit, name, tags=DEFAULT_TAGS):
current_left, current_right = self.selection[0].begin(), self.selection[0].end()
left, right = self.left, self.right
first, last = left.end, right.begin
if left.end != right.end:
if name in tags and left.size() > 1:
first, last = right.begin + 1, right.begin + 1
if first == current_left and last == current_right:
first, last = right.end, right.end
else:
first, last = right.begin, right.begin
if first == current_left and last == current_right:
first, last = right.end, right.end
else:
# There is no second bracket, so just select the first
if name in tags and left.size() > 1:
first, last = left.begin + 1, left.begin + 1
else:
first, last = right.end, right.end
if first == current_left and last == current_right:
first, last = right.end, right.end
self.selection = [sublime.Region(first+1, last+1)]
def plugin():
return BlockEscape
, 제대로 작동하지 않을 수 있습니다. 이 경우 직접 수정하거나 Gist page에 의견을 남기십시오.
당신은 그 위치에 탭으로 코드 조각에 $0
을 추가 할 수 있습니다
<snippet>
<description>If Condition</description>
<content><![CDATA[if (${1:/* condition */}){
${2:/* code */}
}${0}]]></content>
<tabTrigger>if</tabTrigger>
<scope>source.c</scope>
</snippet>
이 답변은 발췌문 작성과 관련되어 있으며 질문이 암시 하듯이 코드 작성의 일반적인 경우는 아닙니다. 적절한 응답이라고 확신합니까? –
대답은 OP의 질문을 해결합니다. 플러그인과 스 니펫은 ST2에서 이러한 작업이 가장 잘 수행되는 방법입니다. – AGS
내가 준 스 니펫은 특정 경우에만 작동합니다. 내가 요구하는 것은 진술을 "탭 아웃 (tab out)"할 수 있다는 것입니다. 그것은, while, for 등이 될 수 있습니다. 또 다른 예는 제가 키 대괄호를 사용하여 괄호와 따옴표를 탭할 수 있습니다. 닫는 괄호/인용 앞의 탭. 그러나 이것은 인라인에서만 작동합니다. – conjugate
- 1. 이 Python 코드 블록은 무엇을합니까?
- 2. 이 Ruby 블록은 Eloquent Ruby에서 어떻게 작동합니까?
- 3. 이 코드 블록은 자바를 깨기 위해 곧게됩니다.
- 4. 이 문장 블록은 파이썬에서 정확히 무엇을합니까?
- 5. 블록은 무엇을합니까?
- 6. 블록은 항상
- 7. 이 숭고한 발췌 문장을 이해하고 있습니까?
- 8. 블록은 확장 된 템플릿
- 9. IE8 블록은 iframe 쿠키
- 10. PFObject의 saveInBackgroundWithBlock : 방법 - 블록은
- 11. 이 jQuery 블록은 약간의 오류로 이상한 루프를 만듭니다.
- 12. 이 코드 블록은 전 세계에서 어떻게 작동합니까 [trees]?
- 13. 이 C 코드 블록은 어떻게 정수 할당으로 해석됩니까?
- 14. 사용자 정의 블록은
- 15. 디스플레이 블록은 내가 레이아웃이
- 16. 시도-catch 블록은
- 17. PHP 블록은 HTML
- 18. IValueConverter 블록은 삭제를 방지합니다.
- 19. JQuery와 디스플레이 인라인 블록은
- 20. FileInputStream.read() 블록은 언제입니까?
- 21. 악기의 색상 블록은 무엇을 의미합니까?
- 22. 중괄호와 괄호가있는 블록은 어떻게 작동합니까?
- 23. HTML 버튼 앵커 디스플레이 블록은
- 24. 사용 블록은 내가 블록을 사용하려고
- 25. Ember.js의 링크에 내부 #each 블록은
- 26. Do 블록은 With 문과 동일합니까?
- 27. 루비 class.new 블록은 실행되지 않는
- 28. JavaScript에서 function() 블록은 언제 필요합니까?
- 29. 숭고한 텍스트 2 라이센스 - 숭고한 텍스트 2
- 30. 왜이 코드 블록은 빈 공간이됩니까?
정말 고마워요, 내가 키 바인딩 + 이동 입력 설정, 그것은 완벽하게 작동합니다. – conjugate