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

도구와 팁

:g (vim)

:g[lobal] 사용법 : :[range]g[lobal]/{pattern}/[cmd] 주어진 범위에 대해 패턴에 매칭하는 줄에 대해서만 주어진 명령을 실행한다. 사용예 빈줄을 모두 삭제하는 명령 :%g/^$/normal dd 이때 명령은 명령모드 명령이다. 따라서 키 시퀀스 명령을 쓰려면 normal을 사용하 면된다. 참고 반대로 패턴에 매칭되지 않는 경우에만 실행하려면 :g!를 사용한다. 이와 동치의 명령으로는 :v가 있다.

vim의 정규식 기호와 very magic 모드

vim의 문자열 검색, 치환 기능은 패턴 매칭에 의한 것이며, 이 패턴 매칭은 정규식에 기반을 두고 있다. 그런데 정규식 문법을 조금 알고 있는 상태에서 vim의 정규식을 사용하면 깊은 빡침을 느끼거나 심한 멀미를 겪을 수 있다. 왜냐하면 정규식은 딱히 하나의 정해진 표준도 없거니와 기능과 편의를 위해서 여러 갈래로 나뉘어져 있고 vim에서는 상황에 따라서 서로 다른 기준을 사용해서 패턴을 파싱하기 때문이다. 예를 하나 들어보자.

(this)isnot{this}nor[this]

이런 문자열이 있다고 할 때, 괄호들을 포함한 this를 검색, 즉 (this), {this}, [this]를 검색하려면 다음의 패턴을 사용한다.더 보기 »vim의 정규식 기호와 very magic 모드

[Cocoa / Objective-C] NSString의 문자열 뒤집기, 글자를 정렬한 문자열 구하기.

프레임워크에 당연히 있는 기능일 줄 알았는데 없더라… 그래서 자작. 짤막한 설명 문자열 뒤집기는 C문자열로 바꾼다음 포인터를 쓰는게 제일 깔끔할 것 같아서 그렇게 했다. -UTF8String 메소드는 const char 타입 포인터를 리턴하는데, 이걸 char 형으로 강제캐스팅하는 게 찜찜해서 strcpy로 복사했는데, 어디서 이 함수도 상당히 나쁘다고 쓰지 말라더라. (다른 뭐를 쓰라던데 그게 기억이 안나서 그냥 씀) malloc으로 할당한 메모리는 ARC의 관심밖이므로 철저히 free 해주는 나란 남자, 그런 남자… 문자열내 문자들을 사전순으로 정렬해주는 건 소인수 분해 따위나 할 때 쓸모가 있긴 있을텐데,  NSArray의 sortedUsingComparator:… 더 보기 »[Cocoa / Objective-C] NSString의 문자열 뒤집기, 글자를 정렬한 문자열 구하기.

iTunes 11 출시

한국시간으로 11월 30일 새벽에 아이튠즈 11이 출시되었다. 원래는 10월에 출시될 예정이었는데 문제가 있어서 출시를 한 달 미루면서 일부 설계를 바꾸고 새로 작성한 부분이 꽤 된다는 이야기가 있다.  (11월 출시조차 못맞추는 건 아닐까 내심 조마조마했었다.) 거의 2년 가까이 아이튠즈의 외관에는 큰 변화가 없었는데, 그나마 마이너 업데이트가 계속 되었던 것은 iOS의 버전이 올라가면서 그에 맞는 드라이버 업데이트가 필요했기 때문이다. (윈도와 맥 공통으로 아이폰을 컴퓨터와 연결하는 데 필요한 장치 드라이버는 아이튠즈에 포함되어 있다. 그래서 상위 버전의 iOS와 동기화하려면 아이튠즈 업그레이드는 필수) 이번에 새로… 더 보기 »iTunes 11 출시

맥의 부팅음을 없애는 방법

맥 특유의 부팅음은 PC계열의 삑- 하는 소리보다는 아름답지만, 도서관 등의 공공장소에서 재부팅이라도 한 번 할라치면 참 난감하다. (생각보다 이 부팅음의 소리는 큰 편이더라.) 맥 부팅음을 없애주는 앱 같은 것도 나와 있는 것 같던데. 암튼, 누군가는 이런 게 분명 필요한 모양이다. 이 부팅음을 영영 안나오게 하는 건 서드파티 앱 없이도 할 수 있다. 터미널을 열고 다음과 같이 입력한다. sudo 명령을 쓴다는 것은 이 명령을 입력하고 엔터를 친 후, 비밀 번호를 물어보게 된다. sudo nvram SystemAudioVolume=%80 입력 후 자신의 로그인 계정의 비밀번호를… 더 보기 »맥의 부팅음을 없애는 방법

[OSX] 맥에서 손쉽게 아이폰용 동영상 인코딩하기

디지털 카메라나 아이폰이 아닌 스마트폰으로 찍은 동영상을 아이폰에서 재생하려면 인코딩을 해야하는 경우가 있다. 윈도에서는 곰인코더 같은 게 많이 있던데 맥에서는 뭘쓰면 좋을라나… 싶었지만 구관이 명관(?)이라고 리눅스 쓸 때부터 쓰던 Handbrake가 좋겠다 싶었다. (당연히 맥용도 있고, 윈도용도 있음) HandBrake는 Preset을 정해서 쉽게 인코딩을 할 수는 있지만, 매번 영상 파일을 찾아서 일일이 지정하기는 좀 번거로우니까, 아예 Automator를 써서 한 방에 처리할 수 있는 도구를 만들어 보도록 하자. 이 때 약간의 준비물이 필요하다. 동영상을 인코딩할 Handbrake는 CLI 버전이 있어야 하고 (터미널에서 실행되는 명령줄… 더 보기 »[OSX] 맥에서 손쉽게 아이폰용 동영상 인코딩하기

최근 Xcode의 개선사항

애플은 단지 SDK만 업그레이드하는게 아니라 개발도구도 지속적으로 개선해나가고 있다. Xcode 3 -> 4로 넘어올 때도 상당히 좋아졌는데, 4.5까지 오면서 계속해서 개선되고 있다. What’s new in Xcode 4.3 개별 도구 앱이 하나의 앱 패키지에 통합됨 명령줄 도구를 선택적으로 설치하도록 분리됨 /Developer 디렉터리를 사용하지 않음. 한대의 맥에 다른 버전의 Xcode를 동시에 설치하는 것이가능하며, Xcode는 기존 버전의 Xcode를 삭제하는 기능을 제공함 신규 코코아 프로젝트에서 Auto Layout이 디폴트로 설정됨. What’s new in Xcode 4.4 LLVM 4.0 컴파일러가 적용됨. 이 때부터 NSString외의 객체도 @Literal을 사용할… 더 보기 »최근 Xcode의 개선사항

MacVim의 vimrc 파일을 별도로 관리하기

MacVim은 코코아로 만들어진 GUI 기반의 vim앱이다. 취향에  따라서는 터미널에서 vi를 실행해서 쓸 수도 있지만 (난 아무래도 이쪽인 듯) MacVim은 마우스를 지원하는 등의 “조금 더 쉽게” vi의 강력한 기능들을 활용할 수 있다. MacVim은 ~/.vimrc 파일을 로딩해서 터미널의 vi와 동일한 설정을 그대로 따를 수 있지만, 경우에 따라서는 몇몇 설정이 별도로 필요할 수 있다. 이런 경우에는 MacVim에서만 사용하는 vimrc 파일이 있으면 좋겠는데…. 그런데 그것이 실제로 있습니다. 아는 사람은 아시다시피 OSX의 앱은 그 자체가 하나의 ‘폴더’로 존재한다. 즉 폴더에 아이콘이 씌워져 있고, 이를 더블… 더 보기 »MacVim의 vimrc 파일을 별도로 관리하기

[Mac] 다음으로 열기… 에서 앱이 중복으로 나타나는 문제

파인더에서 특정 파일을 열 때 기본 앱이 아닌 다른 앱으로 실행하려면 오른쪽 클릭 후 “다음으로 열기…”를 선택하여 앱을 고를 수 있다. 만약 설치에 문제가 있었거나, 제대로 삭제하지 않고 재설치하는 등의 이유로 인해 중복된 앱이 표시되는 문제가 있을 수 있다. (특히 구글 크롬의 경우, 업데이트 되는 과정에서 이런 문제가 생길 수 있음) 이때의 해결책. 다음의 명령을 복사하여 터미널에서 실행한다. /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user 조금 시간이 걸릴 수 있다. 완료되면 파인더를 재시작한다. killall Finder 확인해보면 중복앱이 정리되어… 더 보기 »[Mac] 다음으로 열기… 에서 앱이 중복으로 나타나는 문제

터미널로부터 알림 받기

터미널을 통해 시간이 걸리는 작업을 걸어놓고 멍하니 변화없는 터미널을 바라보기 보다는 다른 작업을 하고 있는 편이 좋을 때도 있다. 그렇다고 다른 작업을 하다가 터미널에서 돌아가던 작업이 완료된 것도 모르고 빠져들어버리면 그것도 좀 시간 낭비가 될 수 있고… 아무튼 그런 경우에 유용하게 사용할 수 있는 팁. tput 명령을 사용하면 터미널이 비활성 상태일 때 Dock에 있는 터미널에 알림을 보낼 수 있다. tput bel 이라고하면 터미널 창이 비활성 상태일 때 Dock을 통해 알림을 보낸다. 따라서 수행하고자 하는 명령을 입력한 후 && tput bel… 더 보기 »터미널로부터 알림 받기