콘텐츠로 건너뛰기

Ex명령을 반복하기

vim 에서 Ex명령(콜론(:)으로 명령모드로 진입해 실행하는 명령)을 노멀모드에서 반복하려면 @: 을 사용합니다. 한 번 반복한 후에는 @@ 를 사용해서 반복할 수 있습니다. 참고로 변경이나 치환, 삭제등의 편집 명령은 노멀모드에서 . 명령을 통해 반복할 수 있어요. 이러한 반복 명령은 모두 앞에 숫자를 붙여서 한 번에 원하는 횟수만큼 자동으로 반복할 수 있습니다. @는 원래 특정한 레지스터에 들어있는 내용을 자동으로 실행해주는 명령이에요. 보통 q 를 사용해서 매크로를 녹화한 후에 매크로를 실행할 때 사용합니다. 이전 명령을 실행하는 다른 방법으로는 : 키로 명령모드로 전환한 후에… 더 보기 »Ex명령을 반복하기

vim9script 로 autoload 함수 작성하기

vim의 플러그인 스크립트는 런타입 디렉토리 내 plugin 디렉토리 아래에 위치하며, vim이 시작될 때 해당 디렉토리 하위의 모든 vim 파일을 로딩하게 됩니다. 만약 라인 수가 많은 스크립트가 있거나 혹은 읽어들여야 하는 스크립트 파일이 많다면 vim의 초기 시작 시간에 영향을 주게 됩니다. 따라서 많은 플러그인들은 이러한 시작 성능의 영향을 최소화하기 위해서 스크립트의 로딩 시점을 최대한 뒤로 미루는 방법을 적용합니다.

  1. 특정한 타입의 파일을 편집하려할 때 필요한 기능이 있다면 ftplugin 디렉토리 내에 vim 파일을 위치 시킵니다. 여기에 있는 스크립트들은 그 이름과 동일한 타입의 버퍼가 열릴 때 로드됩니다.
  2. 공통적으로 사용하는 함수라면 autoload 디렉토리에 작성합니다. 이 디렉토리에 있는 파일은, 특별한 패턴의 이름으로 함수를 정의하며, 해당 함수가 실제로 호출되기 전까지는 파일이 로드되지 않습니다
더 보기 »vim9script 로 autoload 함수 작성하기

vim에서 여러 파일에 찾기/바꾸기

리눅스 쉘에서, 여러 텍스트 파일의 내용들 중 특정한 단어나 패턴을 찾는데 사용되는 유틸리티인 grep 이라는 프로그램이 있습니다. vim에서도 grep과 같이 여러 파일에서 단어나 패턴을 한꺼번에 찾을 수 있는 기능을 제공합니다. vim의 이러한 기능은 다시 두 가지로 나뉩니다. 첫째로 vim은 그 자체로 grep과 비슷한 기능을 제공하도록 구현되어 있어서 내장된 :vimgrep 이라는 명령을 사용합니다. 이 방식은 vim만 있으면 사용할 수 있고, 플랫폼마다 개행문자가 다르게 쓰이는 부분이나 파일 인코딩을 자동으로 처리해주는 장점이 있습니다만, 속도가 느리다는 단점이 있습니다. 두번째 방법으로는 아예 grep을 사용하여 텍스트를 탐색하고, 그 결과를 vim으로 가져오는 방식이 있습니다. 오늘은 vim에서 grep과 같이 여러 파일에서 텍스트를 검색하고 결과를 사용하는 방법에 대해서 살펴보겠습니다.

더 보기 »vim에서 여러 파일에 찾기/바꾸기

Requests를 사용해서 파일 다운로드 경과를 표시하기

Requests는 파이썬 사용자들이 가장 많이 사용하는 HTTP 통신용 라이브러리일 것이다. 비록 파이썬 표준 라이브러리에 포함되지는 않았지만, 공식 문서에서조차 ‘Requests를 쓰는게 편리하니 추천한다’고 언급할 정도이니… 사실, 파이썬의 역사는 우리의 생각보다 훨씬 오래되었고, 그 와중에 HTTP와 관련된 공식 라이브러리에도 몇 가지 변화가 계속 있어왔다. 최초로 HTTP를 사용하여 데이터를 가져오는 기능은 urllib 에서 구현된 urlopen() 함수였는데, 이 때의 urlopen()은 단순히 open() 함수를 HTTP 너머로 작동하게 하는 것 이상도 이하도 아닌 간단한 구현체였다. HTTP와 관련된 명세는 제법 방대하고 명세 중에서 쓸만한 기능을 제작하기 위해… 더 보기 »Requests를 사용해서 파일 다운로드 경과를 표시하기

텔레그램 API로 채널에 메시지 보내기

파이썬에서 텔레그램 API를 사용하여, 특정 채널에 메시지를 보내는 방법을 알아봅시다. API를 통해서 메시지를 게시하려는 채널이 있다면, 텔레그램에서 새로 봇 하나를 만들고, 이 텔레그램 봇을 해당 채널의 관리자로 추가해줍니다. 이렇게 해 두었다면 API를 사용하여 봇으로 하여금 채널에 메시지를 보낼 수 있게 됩니다. 채널 뿐만 아니라 대화 ID만 알고 있다면,1:1 대화나 그룹대화에도 메시지를 보낼 수 있습니다. 오늘은 이 과정을 하나씩 따라가면서 살펴보겠습니다. 봇 생성하기 봇의 생성은 텔레그램 앱에서 할 수 있습니다. 모바일 앱 외에 PC용 텔레그램에서도 똑같이 할 수 있습니다. 텔레그램에서 제작한… 더 보기 »텔레그램 API로 채널에 메시지 보내기

라이트세일 인스턴스 업그레이드 및 설정

월 5천원 정도 하던 국내 호스팅 서비스를 쓰다가, 저장 공간의 압박이 너무 커서 여기 저기로 옮겨 다니다 라이트세일에 정착한 것이 대략 2018년이다. (그 전에 해외 호스팅을 사용해봤는데, 얘들은 처음 1년 혹은 몇 달은 저렴하게 프로모션하지만, 그 이후로 요금은… 흠..) 처음 2년반 넘게 사용하는 동안에는 불편함이 없었는데, 워드프레스가 버전업이 되면서 무거워져서 그런지 점점 느려진다는 느낌이 들었다. 또, 번거롭게 설치하는 일 없이 사용하려고 bitnami 인스턴스를 사용했는데, 문제는 bitnami 스택에서 php만 업그레이드한다거나 하는 것이 어려웠다.

더 보기 »라이트세일 인스턴스 업그레이드 및 설정

vim의 탭 및 들여쓰기 관련 설정

vim 설정 파일을 작성할 때, 초반에는 누군가의 설정 내용을 참고해서 만들고 불편한 부분들을 나에게 맞게 고쳐나가는 방식을 많이 사용하다 보니, 어떤 부분은 설정 파일에 떡하니 설정은 해두었지만 무슨 내용인지, 어떤 효과를 내는지 모르는 것이 많다. 특히 탭이나 들여쓰기 관련 설정이 그러한데, 일부 언어에서는 공백의 수가 문법적으로 크리티컬한 경우도 있다. 이런 문제 외에도 들여쓰기와 탭 동작은 취향과 필요에 따라서 잘 설정해야 하는 부분일 것이다. 오늘은 탭과 관련된 설정 몇 가지에 대해서 알아보도록 하자.

더 보기 »vim의 탭 및 들여쓰기 관련 설정

Vim에서 점프하기

Vim에서 우리는 ‘마크’라는 것을 사용하여 특정한 파일의 특정한 위치에 표식을 남겨두고 단축키를 사용하여 해당 위치로 언제든 돌아갈 수 있습니다. 특정 위치에 a 라는 마크를 남기고 다시 다른 파일을 편집하던 중에 이전에 마킹해놓은 위치로 돌아가는 동작을 Vim에서는 “점프”라고 합니다. Vim에서 이러한 점프는 현재 창에서 새로운 버퍼를 연다거나, 이전 편집 위치로 이동하거나 하는 등의, 스크롤을 통한 이동을 제외한 대부분의 이동이 해당됩니다. Vim에서 편집을 하던 중에 점프가 발생하면, Vim은 점프를 하기 전에 현재 ‘위치’를 “점프 리스트”라는 큐에 기록합니다. 그래서 점프를 통해 다른 곳으로… 더 보기 »Vim에서 점프하기

vim에서 긴 행을 자동 줄바꿈하는 올바른 설정

세상에는 메모장을 위시로 하여 수 없이 많은 GUI 기반 텍스트 편집기가 있습니다. 그 중 가장 간단한 텍스트 편집기인 윈도 메모장에서도 “자동 줄 바꿈”이라는 옵션은 존재합니다. 메모장에도 있을 정도의 기능이면 줄바꿈 없이 긴 문장을 화면에서 읽으려고 할 때, 가장 필요한 기능이라고도 할 수 있겠습니다. 오늘은 vim에서 긴 행은 어떻게 처리되는지, 그리고 이런 ‘자동줄바꿈’과 관련된 옵션은 어떤 것들이 있고 어떻게 설정하면 좋을지에 대해 생각해 보도록 하겠습니다.

더 보기 »vim에서 긴 행을 자동 줄바꿈하는 올바른 설정

토체프 벽돌돼서 A/S 받은 후기

사무실에서 사용하는 키보드가 토체프 무선 저소음 적축 모델입니다. 블루투스 연결을 지원하는 풀배열 기계식 키보드 자체가 선택의 폭이 그리 넓은 편이 아닌데, 그 중에서 토체프가 가장 예쁜 것 같아서 사용하고 있습니다. 주로 무선으로만 사용하고 한 달에 한 번 정도만 잠시 충전을 위해 유선으로 연결하는데, 엊그제가 때마침 충전해야 할 시기라 연결했더랬지요. 그랬더니 새로운 펌웨어가 나왔다면서 펌웨어를 업데이트하라길래 아무 생각없이 업데이트하였는데… 때마침 그 때 제우스 엔진도 같이 업데이트 되면서 프로그램이 종료되었고 펌웨어 업데이트에 실패했습니다.

업데이트 하겠다고 확인을 클릭한 후에 잠시 전화기를 보다가 다시 PC 화면을 보니, 제우스 엔진 프로그램이 다시 시작되더니 조금 있다, 윈도 작업 표시줄에 USB 장치를 인식하는데 실패했다는 메시지가 뜨더군요. 읭? 뭐지? 하고 있는데 갑자기 키보드인가? 하는 생각이 들었습니다. 키보드의 부트 로더가 손상됐는지 아예 인식이 안되더군요. 인식이 안되면 초기화나 펌웨어 재설치가 불가능한 듯 하여 고객 센터에 전화를 하였습니다. 증상을 말하니 센터에 입고 시켜서 확인을 해봐야할 것 같다고 하더군요. 그래서 그날로 바로 우체국 택배로 제품을 고객센터로 보냈습니다.

더 보기 »토체프 벽돌돼서 A/S 받은 후기