콘텐츠로 건너뛰기
Home » 도구와 팁 » 페이지 3

도구와 팁

vim script 함수 총정리

vim에서 자주 사용하는 간단한 매크로는 키 맵으로 정의해서 사용할 수 있다. 하지만 여러 명령을 결합하거나, 데이터를 조작하거나 상황에 따라서 분기해야하는 등의 좀 더 복잡한 동작을 구현하기 위해서는 함수가 필요하다. vim script에서도 함수를 지원하고 있어서 이를 활용할 수 있는데, 오늘은 함수를 정의하고 사용하는 여러 방법에 대해서 정리해보도록 하겠다. 가능하면 이 포스트 하나로 vim 스크립트에서 함수를 정의하고 사용하는 것과 관련된 내용은 모두 다뤘으면 한다. (그리고 이후에 vim script 관련 포스팅을 하더라도 참고용으로 긴 설명 글이 필요하기도 하고…)

더 보기 »vim script 함수 총정리

파일 탐색 유틸리티 fd 사용법

이 블로그에서 GNU find의 사용법에 대한 글을 올린 적이 있는데, 오늘은 이 GNU find를 대체할 수 있는 fd 라는 툴의 사용법에 대해서 간단히 정리해보고자 한다. fd는 이름부터 ‘find’를 50%줄여서 더 빠르게 쓴다는 취지로 개발되었으나, GNU find를 ‘완전히’ 대체하는 것을 목표로 하지는 않는다. 대신에 옵션명을 보다 직관적으로 현대화(?)하고 더 빠르게 동작할 수 있는데 중점을 두고 개발되었다. 개발자에 따르면 find 유틸이 제공하는 전체 기능의 80% 정도를 커버할 수 있으며, 성능은 대략 9배이상 빠른 것으로 본다고 한다. 무엇보다 윈도환경에서 사용이 가능하다. (msys 같은… 더 보기 »파일 탐색 유틸리티 fd 사용법

vim의 키 맵 설정 팁

vim에서 키맵을 잘 활용하는 것의 중요성은 딱히 말하지 않아도 될 것 같으니, 키 맵을 설정하는데 있어서 몇 가지 알아두면 좋은 팁들을 소개하고자 한다. 키 맵 작성 방법 키 맵은 :map 명령을 사용해서 정의할 수 있다. :map A B의 형식이다. A는 사용할 키 시퀀스이고 B는 A를 입력했을 때 작동할 키 시퀀스이다. 여기서 A, B가 모두 키 시퀀스라는 점을 잘 알아두자. 특정한 키 하나를 눌러서 동작을 실행하는게 아니라, 두 개 이상의 키를 순서대로 눌러서 동작을 실행할 수 있다. 따라서 실제로 vim의 키맵은… 더 보기 »vim의 키 맵 설정 팁

Vim에서 팝업 사용하기

vim8부터 popup 기능이 새롭게 도입되었다. 이제 vim script에서 팝업을 만들어서 대화 상자나 메뉴 혹은 그외의 UI들을 팝업 레이어로 만들어서 편집기 위로 띄울 수 있게 되었다. 특히 비동기로 외부 job을 실행하는 함수를 작성하는 경우에 그 결과를 사용자에게 알려주는 용도로 사용하기에 용이하다. 이 기능을 어떻게 사용하는지 살펴보도록 하자.

더 보기 »Vim에서 팝업 사용하기

vim 플러그인의 키맵과 함수 이름

vim 플러그인을 작성하는 것을 간단히 요약하면 어떤 기능을 수행하는 함수를 작성하고, 이 함수를 호출할 수 있는 방법을 제공해주는 것이라 할 수 있다. 이 때 고려해야하는 중요한 요소 중 하나는 사용자는 내가 작성하는 플러그인 말고도 엄청나게 많은 다른 플러그인을 사용하고 있을 것이라는 것이다. 따라서 함수의 이름이나 사용자 정의 명령의 이름, 키 맵핑등이 온전히 내가 원하는대로 사용자가 쓸 수 있을 것이라는 생각을 하는 것은 위험하다.

더 보기 »vim 플러그인의 키맵과 함수 이름

Vim 설정 관련 팁

옵션 목록과 도움말 찾기 옵션을 설정하기 전에 옵션에 관한 도움말을 읽어보는 것을 권장한다. 전체 옵션을 한 눈에 볼 수 있는 명령으로 :opt 가 있다. 이 명령을 실행하면 현재 창에서 새 분할 창이 생겨서, 전체 옵션이 망라되고 간단한 설명과 현재 설정되어 있는 값을 확인할 수 있다. 분할창을 전체 창으로 보려면 ctrl-w o를 누른다. (<ctrl-w>를 누른 후 <o> 키를 한 번 더 누르면 된다.) 옵션 창에서 옵션 이름 위에서 K (대문자이므로 <shift-k>를 누를 것)를 누르면 해당 항목에 대한 도움말을 추가로 표시할 수… 더 보기 »Vim 설정 관련 팁

cocnvim rename 이 작동하지 않을때

cocnvim + jedi-language-server 조합을 사용중인데, 언제부터인가 rename 기능이 작동을 안하기 시작했다. 같은 버전의 cocnvim을 설치했을 때, nvim에서는 잘 되고, vim에서는 PC에 따라서 되는 것도 있고 안되는 것도 있고 원인을 찾을 수가 없었다. (심지어 같은 소스로 빌드한 vim에서도 같은 cocnvim 버전, 같은 nodejs 버전에서도 결과는 모두 달랐다. 또 대상 파일의 언어에 무관하게 재현되는 문제이다.) 일단 임시 방편으로 cocnvim 설정에서 coc.preferences.promptInput 값을 false로 두면 이름 변경할 때 팝업창이 아닌 명령줄에서 이름을 입력하도록 바뀌는데, 이렇게 설정을 바꿔둔 경우에는 테스트 해 본 모든 환경에서… 더 보기 »cocnvim rename 이 작동하지 않을때

vim에서 터미널로 코드를 실행하기

vim에서 파이썬이나 자바스크립트 코드를 작성하고 바로 실행하는 가장 쉬운 방법은 :!python % 과 같이 외부 명령을 바로 호출하는 것이다. 이 경우 vim은 잠시 숨겨지고 해당 명령을 실행하는 상태로 화면이 전환된다.

보다 IDE와 비슷한 느낌(느낌 알잖아요…)이 중요하다면 vim내에서 창을 나누고 그 창에서 실행 결과를 보는 방법이 있다. vim8에서 도입된 job 기능을 사용하여 백그라운드에서 해당 프로그램이 실행되면 그 결과를 새 버퍼로 받아서 보여주는 방법도 있고, 또 아예 :term 명령으로 해당 파일을 여는 방법도 있다.

더 보기 »vim에서 터미널로 코드를 실행하기

(Vim) 사용자 정의 함수를 작성하는 법

Vim에서 간단한 조작으로 좀 더 복잡한 기능을 만드는 기능으로는 키맵이나 사용자 정의 명령을 정의하는 방법들이 있다. 다만 이러한 기능들은 기본적으로 항상 똑같은 입력을 단축하여 수행하게 하는 수준에서 사용된다. 특정한 환경이나 조건에서 작동하도록 기능을 커스터마이징하고 싶거나, 보다 복잡하고 정교한 기능을 사용하고 싶다면 사용자가 직접 함수를 정의하여 사용할 수 있다.

사용자 정의 함수는 다음과 같이 사용할 수 있다.

  • 특정 키맵을 사용하여 사용자 정의 함수를 호출한다.
  • 사용자 정의 함수를 호출하는 사용자 정의 명령을 만들어 사용한다.
  • 삽입모드 키맵을 만들어서 입력 중에 특정 키를 눌러 사용자 함수를 호출한다.

사용자 함수를 정의하는 전통적인 명령은 :fu[nction] 으로, 명령을 선언한 후 :endfu[nction] 명령을 만날 때까지 입력된 모든 명령이 순서대로 함수의 body로 기록되는 방식이다.이 명령은 새로운 함수를 정의하는 동작 외에도 기존에 생성된 사용자 정의 함수를 모두 리스트업하는 기능을 수행한다. 예를 들어 이름이 “~Files”로 끝나는 사용자 함수들을 확인하려면 :function /Files$ 라고 실행하면 함수의 검색 결과를 볼 수 있다.

더 보기 »(Vim) 사용자 정의 함수를 작성하는 법