vim으로 고속 코딩하는 방법
9842 단어 Vim
Vim이라고 하면 고속으로 코딩할 수 있다는 인상을 가지고 있는 것이 많지 않을까요?
오늘은 Postfix Code Completion이라는 기술을 사용하여 빨리 코딩하는 방법을 소개합니다.
이 방법을 사용하면 다음 gif와 같이 빨리 JSON을 반환하는 HTTP 서버를 세울 수 있습니다.
Postfix Code Completion이란?
후치 보완이라는 보완 수법입니다.
예를 들어
(a == b)
에 if
를 사용하려면 (a == b).if
를 입력하여 확장하면 if (a == b) { }
라는 식으로 보완해 줍니다.뒤의 코드
if
가 이전의 코드 (a == b)
에 작용한다고 하는 생각입니다.이것을 적극적으로 사용해 가면 보다 고속으로 코딩할 수 있게 됩니다.
제 경우에는 비교적 후치 보완뿐만 아니라 스니펫처럼 사용하고 있습니다.
Vim에서 Postfix Code Completion을 사용하는 방법
Vim은 sonictemplate.vim이라는 플러그인이 지원합니다.
기본적으로 Postfix 패턴 파일이 제공됩니다.
<C-y><C-b>
에서 패턴을 확장할 수 있습니다.물론 스스로 패턴 파일을 준비할 수도 있습니다.
먼저 자체 템플릿 디렉토리를 설정합니다. 제 경우에는
~/.vim/sonictemplate
하고 있습니다.let g:sonictemplate_vim_template_dir = expand('~/.vim/sonictemplate')
그런 다음 언어의 디렉토리를 만듭니다. 디렉토리 이름은 파일 유형 이름과 같아야 합니다.
js
이면 javascript
라는 디렉토리를 만듭니다. 이 기사에서는 Go 언어 템플릿을 만들 것입니다.$ mkdir ~/.vim/sonictemplate/go
그런 다음 Postfix 패턴 파일을 만듭니다. 파일 이름은
pattern.stpl
여야 합니다.$ vim ~/.vim/sonictemplate/go/pattern.stpl
이
pattern.stpl
에 패턴을 추기해 갑니다.패턴 작성 방법
다음과 같이 1행째에 패턴을 2행째 이후에 전개 후의 코드를 기술합니다. 두 번째 줄 이후에는 탭이 필요합니다.
\(\S\+\)\.var$
var {{$1}} = {{_cursor_}}
여러 패턴은 빈 줄로 구분됩니다.
\(\S\+\)\.var$
var {{$1}} = {{_cursor_}}
\(\S\+\)\.iferr$
if {{$1}} != nil {
return {{$1}}
}
{{_cursor_}}
패턴은 정규 표현식을 사용할 수 있습니다. 그리고 확장된 코드에서는
{{}}
로 둘러싸인 플러그인 독자적인 구문을 사용할 수 있습니다.위의 예에서
{{$1}}
는 후방 참조 ( \(\S\+\)
의 부분) 하고 있습니다. {{_cursor_}}
는 전개 후 커서의 위치를 지정합니다.{{}}
를 사용한 구문은 그 밖에도 있습니다. 도움말을 참조하십시오.패턴 예
내가 사용하는 패턴을 몇 가지 소개합니다.
db 열기
db.open\.\(".*"\)\.\(".*"\)$
db, err := sql.Open({{$1}}, {{$2}})
if err != nil {
log.Fatal(err)
}
defer db.Close()
{{_cursor_}}
// 展開前
db.open."sqlite3"."test.db"
// 展開後
db, err := sql.Open("sqlite3", "test.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
쿼리 발행
db\.query\.\(.*\)$
rows, err := db.Query({{$1}})
if err != nil {
log.Fatal(err)
}
defer rows.Close()
{{_cursor_}}
// 展開前
db.query."select * from todos"
// 展開後
rows, err := db.Query("select * from todos")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
JSON 인코딩
json\.encode\.\(\S\+\)\.\(\S\+\)$
if err := json.NewEncoder({{$1}}).Encode({{$2}}); err != nil {
{{_cursor_}}
}
// 展開前
json.encode.writer.&gorilla
// 展開後
if err := json.NewEncoder(writer).Encode(&gorilla); err != nil {
}
JSON 디코딩
json\.decode\.\(\S\+\)\.\(\S\+\)$
if err := json.NewDecoder({{$1}}).Decode({{$2}}); err != nil {
{{_cursor_}}
}
// 展開前
json.decode.reader.&gorilla
// 展開後
if err := json.NewDecoder(reader).Decode(&gorilla); err != nil {
}
append
\(\S\+\)\.append\.\(\S\+\)$
{{$1}} = append({{$1}}, {{$2}})
{{_cursor_}}
// 展開前
gorillas.append.gorilla
// 展開後
gorillas = append(gorillas, gorilla)
HTTP 서버
http\.server\.\(\S\+\)$
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
{{_cursor_}}
})
log.Println("start http server :{{$1}}")
log.Fatal(http.ListenAndServe(":{{$1}}", nil))
// 展開前
http.server.8080
// 展開後
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
})
log.Println("start http server :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
main
^main$
package main
func main() {
{{_cursor_}}
}
// 展開前
main
// 展開後
package main
func main() {
}
마지막으로
어때?
이 기사를 보고 조금이라도 빨리 코딩할 수 있게 되면 기쁩니다.
그럼 좋은 코딩 라이프 ~
Reference
이 문제에 관하여(vim으로 고속 코딩하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gorilla0513/items/d1b826137aa35890f4df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)