Tags

Trail Target listchars LCS join VI Commonjs conceal 플러그인 replace list replaceAll 치환 function accessors 자바스크립트 arguments vimrc 커피스크립트 html JavaScript 루비 관리 매개변수 VIM SPLIT RUBY Coffeescript nbsp

vim, 탭이나 개행문자를 보고싶어요.

list mode

List mode: Show tabs as CTRL-I is displayed, display $ after end of line.

즉, list mode로 들어가면, 탭문자와 줄바꿈 문자가 화면에 표시되게 됩니다. 그리고 list mode는 다음 명령으로 들어갈 수 있습니다.

:set list

'listchars'

list 모드에서, 탭 문자나, 개행문자를 '→' '↵' 와 같은 문자로... 나타나게 할 수 있습니다.(인코딩이 UTF-8인 경우, UTF-8 문자도 사용 가능.)

그리고 탭문자나 개행문자 이외에도 다음과 같은 문자들을 지원합니다.

eol:c 개행문자 'c'로 표시
tab:xy 탭문자 첫 글자는 'x'로 이후는 탭 너비에 따라 하나 이상의 'y'를 표시
trail:c 구문이 끝난뒤 들어간 불필요한 공백문자를 'c'로 표시
extends:c vim이 'nowrap' 상태에서 화면을 뚫고 넘어간 문장이 있는 라인 오른쪽에 'c'표시
precedes:c 마찬가지로 'nowrap' 상태에서 오른쪽으로 길게 편잡중일때 화면에 가려진 왼쪽 영역에 'c'를 표시
conceal:c 'conceallevel'이 1인경우, 숨김문자(?, Concealed Text)영역에 'c' 표시.
nbsp:c 줄 바꿈 없는 공백(Non-Breakable Space)를 'c'로 표시

위 설정들 중 몇몇을 복합적으로 설정하려면 다음과 같은 방법으로 설정합니다.

:set lcs=tab:>-,trail:-
:set lcs=tab:>-,eol:<,nbsp:%
:set lcs=extends:>,precedes:<

기존의 lcs 속성에 새로운 속성을 추가하려면 다음과 같이 입력하면 됩니다.

:set lcs+=nbsp:_

색을 다르게..

탭이나 줄바꿈 기호가 들어간 뒤로 코드가 더 지저분해진 경우 다음의 명령으로, 해당 기호의 색을 배경색과 비슷하게 수정할 수 있습니다.

hi NonText ctermfg=7 guifg=gray
hi SpecialKey ctermfg=7 guifg=gray

"eol", "extends" 그리고 "precedes"는 NonText으로 "nbsp", "tab" 그리고 "trail"은 SpecialKey로 화면 표시 전/배경 색을 수정해 주면 됩니다.

최종 모습

저작자 표시 변경 금지
Trackback 0: Comments 4

"setTimeout" on JavaScript.

setTimeout 은 자바스크립트에서 자주 쓰이는 평범한 함수의 형태입니다.

setTimeout(function(){
	eat('food');
}, 6000);

CoffeeScript 코드로 바꾸려면 어떻게 해야 할까요?

"setTimeout" on CoffeeScript.

저는 이렇게 작성했습니다. 바로 생각이 나지 않더군요.

setTimeout ()->
    eat 'food'
  , 6000

"assert.response" on JavaScript

JavaScript TDD 프레임웍인 expresso에서 assert.response 는 이렇게 생겼습니다.

assert.response(server, {
		url: '/foo',
		method: 'POST',
		data: 'bar baz'
	}, {
		body: '/foo bar baz',
		status: 200
	}, function(res){
	// All done, do some more tests if needed
	});

커피 스크립트로, 어떻게 작성해야 할까요?

"assert.response" on CoffeeScript

많은 변종을 거쳐서 다음과 같은 코드가 작성되었습니다. 테스트 링크

assert.response server
  , 
    url: '/foo'
    method: 'POST'
    data: 'bar baz'
  ,
    body: '/foo bar baz'
    status: 200
  ,
    (res) ->
      # All done, do some more tests if needed

뭘 기억하고 싶은 거냐면...

CoffeeScript 코드를 작성하다 자주 오류가 나는 부분을 정리해 놓은 것입니다.

저작자 표시 변경 금지
Trackback 0: Comment 0

Ruby, accessorsThe Day of Code

attr_reader, attr_accessor 는 뭘까요?

흥미만 잔뜩 있던, Ruby에 대해서 알고 싶기도 하고, 리팩터링 책도 읽지 못해본 상태라, 두마리 토끼를 잡아보려, "리팩토링:루비 에디션" 을 읽고 있습니다.

그런데 첫 코드에서 막혀 버렸습니다.

나머지는 대충 알겠는데, attr_reader, attr_accessor 요녀석들은 뭘까요?

class Movie
  REGULAR = 0
  NEW_RELEASE =1
  CHILDRENS =2
  
  attr_reader :title
  attr_accessor :price_code
  
  def initialize(title, price_code)
    @title, @price_code = title, price_code
  end
end

Accessors

Yukihiro Matsumoto 님의 Ruby User’s Guide에 쉽게 설명이 있네요.

ShortcutEffect
attr_reader :v def v; @v; end
attr_writer :v def v=(value); @v=value; end
attr_accessor :v attr_reader :v; attr_writer :v
attr_accessor :v, :w attr_accessor :v; attr_accessor :w
저작자 표시 변경 금지
Trackback 0: Comment 0