블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Tips 2010.05.07 13:20

[ Vim/Zencoding ] Vim 에 늦바람들기 시작하면서 Zencoding 만지다

  원격으로 서버에 들어가서 작업해야 될 일이 많기에 주로 emacs/vim 을 사용해왔습니다.
  하지만 뭐 기본적으로 복사/붙여넣기, 검색/치환 을 시작으로 Syntax Highlighting 되면 그냥 오케이라고 생각해왔었습니다.

  올해 초 서서히 붐이 일기 시작한 Zencoding 도 다른 여러 IDE 에 플러그인으로 등장했지만 그닥 사용성에서 만족하지는 못했기에 (IDE 자체가 무겁기도 하고..) 잊고 지내다가, 심심해서 vim의 zencoding 플러그인을 넣어보았습니다.


  $HOME/.vim/plugin/ 에 zencoding.vim 을 넣고 
  
  vim 을 실행시켜서 INSERT MODE 에서 아래와 같이 입력하고

  html:5

  커맨드 모드에서 Ctrl + y , 를 누르면 

  <!DOCTYPE HTML>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title></title>
  </head>
  <body>

  </body>
  </html>

 로 변환됩니다. 적은 타이핑 수로  HTML 기본 뼈대를 갖출 수 있는 것입니다. html:5 같은 스니펫은 zencoding.vim 안에 정의되어 있기 때문에... 거기에 맞춰서 자신에게 필요한 html 기본 뼈대를 만드는 방법도 있을 겁니다. (html:4t 나 html:4s 등등...)

  또한 역시 INSERT MODE 에서 
  table#main>tr.head>th*4<tr.cols*2>td*4

  라고 입력하고 커맨드 모드에서 Ctrl + y , 를 누르면 
<table id="main">
     <tr class="head">
        <th></th>
        <th></th>
        <th></th>
        <th></th>
      </tr>
      <tr class="cols">
         <td></td>
         <td></td>
         <td></td>
         <td></td>
     </tr>
      <tr class="cols">
         <td></td>
         <td></td>
         <td></td>
         <td></td>
     </tr>
  </table>

  이렇게 CSS 셀렉터 와 같은 형식도 지원을 하게 됩니다. 
  그외 자신만의 스니펫을 정의해서 여러모로 웹개발에 편리하게 쓰일 수 있지 않을까 합니다.
  
* 개발서버의 vim 이 6.8.x 였는데 여기에 zencoding.vim 을 넣으니까 에러가 나서 최신버젼 7.2.x 를  홈디렉토리에 넣고 돌렸더니 잘 되덥니다. 은근히 버젼많이 타나봐요. (vim 초짜 ;ㅁ;)

 아무튼 vim++
신고
IT/Mac 2009.01.28 21:03

[ Mac ] Colloquy (Mac IRC Client App) Plugin 만들기


 Colloquy 는 Mac 의 대표적인 IRC 클라이언트 App 입니다. 전 Mac 을 쓸 때에 이 Colloquy 를 가장 많이 사용합니다. 그만큼 IRC 에서 떠드는 일이 많아지고 IRC 는 하나의 생활이 되어버렸네요.
 Perl 로 재미있는 거 만들 수 없을까? 했을 때도 가장 먼저 떠오른 것이 IRC BOT 이었구요... 이번에는 IRC BOT 에서 할 수 없는.. 뭔가 클라이언트 환경에 맞는 일을 해보고 싶었습니다.
 구글 선생님에게 "Colloquy Plugin" 을 치니까 떡하니 나오더군요.

Plug-In Love - Unlimited extensability through Plug-Ins.

  
 - Colloquy :: Write Plug-Ins :  http://colloquy.info/project/wiki/Development/PlugIns

 이 페이지에서는 Plugin 을 쓸 때 지원하는 언어를 나열해놨습니다. Objective-C,  AppleScript, Ruby, Python, JavaScript .... 불행히도 Perl 은 없군요. CamelBones 가 저렇게 방치된 이상 더는 어떻게 못하나 봅니다. 이건 Mac 을 쓰는 Perl Guru 들이 어케 안해줄런지요.
  아무튼 제가 제대로 할 줄 아는 건 JavaScript 밖에 없으니 ... 일단 JavaScript 도 플러그인을 만들어 보기로 했습니다. 아주 친절하게도 플러그인을 만들기위한 기본 Template 이 갖추어져 있습니다. 


  IRC 프로토콜 상의 대부분의 이벤트에 대해서 정의가 가능하며, Mac 스럽게도 Growl 과 연동도 시킬 수 있습니다. 입력시킬 내용을 자동으로 필터링해서 보거나, 보여지는 내용에 대해서도 입맛에 맞게 바꿔서 볼 수 있습니다. 이런 것들로 "하이라이트 단어 설정"(이건 Colloquy 설정화면에도 있습니다), "이모티콘 설정"(이것도 물론...) 등을 할 수 있겠죠.

  제가 IRC 에서 주로 활동하는 곳은 #perl(irc.hanirc.org), #perl-kr(irc.freenode.org) 입니다. 
  채널의 성격에 맞게 새로운 CPAN 모듈이나.. 어느 모듈의 사용등에 관한 얘기가 자주 등장하기도 하죠. 생소한 CPAN 모듈이 나오면 Module 이름을 직접 URL 창에 쳐서 검색을 하거나 하기도 합니다만... 이 부분에서 CPAN 모듈을 정규표현으로 긁어서 CPAN 모듈 페이지에 링크를 걸어주도록 했습니다.
  그 내용은 아래와 같습니다.

  1. function processIncomingMessage( message, view ) {
  2.     var html = message.bodyAsHTML();
  3.     var finalHTML = html;
  4.     var linkRegex = new RegExp( '<a href="([^"]+)">([^<]+)<\/a>', 'gim' );
  5.     var result;
  6.     while( ( result = linkRegex.exec( html ) ) ) {
  7.         var name = result[1];
  8.         var schemeRegex = new RegExp( 'https?:\/\/' );
  9.         if( schemeRegex.test(name) )
  10.             continue;
  11.        
  12.         if( name ) finalHTML = finalHTML.replace( result[0], '<a href="http://search.cpan.org/perldoc?' + name + '" title="' + name + '">' + name + '</a>' );
  13.     }
  14.  
  15.     message.setBodyAsHTML( finalHTML );
  16. }
  17.  

  이 파일을 적당한 파일이름('CPAN.js') 로 저장해서 ~/Library/Application Support/Colloquy/Plugins/ 아래에 놓아둡니다. 그리고 IRC 상에서 /reload plugin 을 쳐서.. 플러그인을 불러옵니다. 


  위처럼 CPAN Module을 때렸을 때는 저렇게 Link 로 표시되며, 해당 링크를 누르면 브라우저에서 저 모듈 페이지가 열리게 되는 것입니다. 물론 제 Client 에서만 저런 HTML 형식으로 표시되기때문에 상대방은 제가 뭔 일을 하는 지 모르는 반응을 보이게 되는 것이죠.
  아, 다행스럽게도 Colloquy 는 ::이 들어간 것을 HTTP URL 링크로 처리하도록 정규표현을 걸어두었기 때문에 위의 JavaScript 소스와 같이 간단하게 모듈이름을 뽑아 올 수 있었습니다. 
  Windows 의 IRC 클라이언트 중에도 전용 스크립트를 사용해서 저렇게 플러그인을 쓸 수 있는 것이 있는 걸로 알고 있습니다. 많은 분들이 클라이언트 프로그램에서 플러그인을 사용하는 것을 봐왔고, 때로는 악질적인 행동으로 방 분위기를 더럽히기도 하죠.
  차후에 시간이 나면  여러가지 편리한 플러그인을 만들어서 공개해보고 싶네요. 
  Mac 을 쓰시며 IRC 를 애용하는 분이 계시면 꼭 한번 해보라고 권해드리고 싶습니다.
신고
TOTAL 470,023 TODAY 6

티스토리 툴바