문제
나는 최근에 사용하기 시작했 Vim 로 내의 텍스트 편집기와 현재 일하는 내 자신에 사용자 지정할 수도 있습니다.
나 키보드 매핑을 할 수있는 꽤 많은 것을,하지만 당분간 나는 그들이 사용하는 종류의 조각이 시설을 거의 독점적으로 이용한다.
그래서 예를 들면,입력하는 경우 def{TAB}
(:imap def{TAB} def ():<ESC>3ha
),확장기:
def |(): # '|' represents the caret
이상적으로 작동하지만,저는 그것을 찾기 때문 Vim 대기 전체 명령하는 동안 나는 단어를 입력하이 포함된"def"지 확장에 관심이 있습니다.
- 는 방법이 있 이를 방지하기 위해 또는 이 기능을 사용하여 더욱 효과적으로 이?
- 은 다른 Vim 기능에 더 적합한 이?
후에 빠르게 살펴보 SnippetsEmu, 처럼 보인다,그것은 최고의 옵션을 훨씬 더 쉽게 사용자 정의하는 나보다 먼저 생각했다.
을 계속 이전를 들어:
:Snippet def <{}>():
정의하면,당신은 확장할 수 있습니다 당신의 조각이 입력하여 def{TAB}
.
해결책
SnippetsEmu 유용한 조각 플러그인입니다.
다른 팁
Snipmate 같은 texmate:) http://www.vim.org/scripts/script.php?script_id=2540
snippet def
""" ${1:docstring} """
def ${2:name}:
return ${3:value}
으로 다른 제안(하지만 약간씩 다르다)사용하여 vim 의 기능 내장:
:iabbrev def def(): #<LEFT><LEFT><LEFT><LEFT><LEFT>
지금 할 때마다 당신이 입력 def 뒤에 공백이 있거나 다른 단어가 아닌 문자,그것은 확장됩니다으로 동일 당신이 무엇을 주었으로의 출력 SnippetsEmu(공간에서 오는 공간을 입력해 트리거 완료).
이 방법을 고통을 하지 않은""지연 문제 발생을 사용:inoremap,내장으로 vim.에 대한 자세한 정보는 이 기능을 살펴 보 :help abbrev
.
당신이 우려 할 수 있는 것에 의해 실행되는 공간이지 않는 탭을 것입니다 불필요하게,그러나 일반적으로 vim 은 똑똑해 트리거할니다.문제할 수 있습 또한 완화 활성화하여 약자만을 위해 특정한 파일 유형(예를 들어,python):
au filetype python :iabbrev ... etc
Snip[ets](관리자|Emu|동료|.vim)은 물론 또한 완벽한 솔루션이지만,그것을 알고 있어야의 대안(특히 그들이 내장되어에서).
는 경우 SnippetsEmu 이 너무 무거운 야망을 위해 당신이 무엇을 필요(그것이 나를 위해),나는 플러그인을 관리하는 조각에 따라 파일 형식.그것을 심지어는 탭을 완료할 때 조각!:)
여기에서 그것을 얻을: 조각.vim
치 UltiSnips.거기에 좋은 설명하는 기사를 왜 선택할 수 있습니다 UltiSnips: 왜 UltiSnips?
나는 사용 하지 않은 다른 조각 플러그인;기로 결정했을 뛰어들과 함께 하는 듯한 모 것을 수용할 수 있으로 나를 더 얻 Vim 기술과 많은 작업을 수행할 수 있기를 원한 것들입니다.
에 의해 언급했듯이 MDCore, SnippetsEmu 인기 있는 Vim 스크립트는 않습니다.해야 하는 경우에만 확대(움직이지 않고 다시 검색),사용할 수 있는 표준 :ab[breviate]
명령입니다.
:ab[breviate] [<expr>] {lhs} {rhs}
add abbreviation for {lhs} to {rhs}. If {lhs} already
existed it is replaced with the new {rhs}. {rhs} may
contain spaces.
See |:map-<expr>| for the optional <expr> argument.