2012-08-07 8 views
3

Vim 7에서 DrawIt 플러그인을 사용하여 일부 ascii 다이어그램을 그립니다.vim에서 그리드를 표시 할 수 있습니까?

너무 많을 수도 있지만 여전히 - 그리기를 쉽게하기 위해 배경에 눈금을 표시 할 수있는 플러그인이 있습니까?

+2

원본을 해킹하거나 터미널 창을 반투명하게 만들고 그리드를 배치하지 않으면 가능하지 않다고 생각합니다. – romainl

+2

그리드에 대한 제안은 없지만 드로잉을 위해서는'set virtualedit = all'을 사용하는 것이 좋습니다. 이렇게하면 커서가 해제되어 실제 문자가없는 곳에 커서를 놓을 수 있습니다. ': h 've' '를 보자. –

답변

7

나는 @ 데이비드 아무와 @의 romainl의 의견을 추가 할 수 없습니다 (I 그것이 영감 뒤에 그리드 반투명 창을 사용 romainl의 제안 @ 생각!). 그것이 진정한 그리드를위한 대용품이 아니다 물론

set cursorline 
set cursorcolumn 

,하지만 적어도 당신이 한 눈에 정렬에 볼 수있게된다 :

그러나 사용하여 커서 위치를 시각적으로 쉽게 찾을 수 있습니다 커서의

+2

이것은 훌륭하다. 내 생각에 그리드보다. –

0

@romainl에 동의하는 경향이 있습니다. Vim에서 소스 코드를 사용하지 않고이 작업을 수행 할 수있는 방법이 없다고 생각합니다. 그러나 몇 가지 해결 방법을 생각해 볼 수 있습니다.

  1. 많은 단말기 에뮬레이터에서 배경 이미지를 설정할 수 있습니다. (예 : xfce4-terminal에이 기능이 있음). 각 셀의 크기가 모노 스페이스 글꼴이 차지하는 공간에 해당하는 배경을 디자인 할 수 있습니다.

  2. Nate Kane의 vim-indent-guide은 문자 정렬에 사용할 수있는 수직선을 표시하는데 도움이 될 수 있습니다. 몇 가지 예는 screenshots 페이지를 참조하십시오.

  3. Vim의 강조 표시를 남용하여 정렬 표를 시뮬레이트 할 수 있습니다.

2

Vim 강조 표시 기능을 사용하여 안내 그리드를 에뮬레이트하는 구현을 제안하겠습니다. 다음 함수는 두 개의 필수 인수와 다른 두 개의 선택적 인수를 취하여 필요한 강조 표시를 만듭니다. 앞의 두 개는 수평선과 수직선 사이의 거리이며, 그에 따라 입니다. 후자의 인수는 그리드로 덮인 영역의 높이와 너비입니다 (선과 문자로 이에 해당). 이 인수를 지정하지 않으면 버퍼의 줄 수와 가장 긴 줄의 길이가 입니다.

function! ToggleGrid(...) 
    if exists('b:grid_row_grp') || exists('b:grid_prev_cc') 
     call matchdelete(b:grid_row_grp) 
     let &colorcolumn = b:grid_prev_cc 
     unlet b:grid_row_grp b:grid_prev_cc 
     return 
    endif 

    let [dr, dc] = [a:1, a:2] 
    if a:0 < 4 
     let [i, nr, nc] = [1, line('$'), 0] 
     while i <= nr 
      let k = virtcol('$') 
      let nc = nc < k ? k : nc 
      let i += 1 
     endwhile 
    else 
     let [nr, nc] = [a:3, a:4] 
    endif 
    let rows = range(dr, nr, dr) 
    let cols = range(dc, nc, dc) 

    let pat = '\V' . join(map(rows, '"\\%" . v:val . "l"'), '\|') 
    let b:grid_row_grp = matchadd('ColorColumn', pat) 
    let b:grid_prev_cc = &colorcolumn 
    let &colorcolumn = join(cols, ',') 
endfunction 
+0

이것을 .vimrc에 복사했습니다. 함수를 호출하는 동안 에러를 얻을 : 함수 19_ToggleGrid 처리 중에 '에러가 검출 : 라인 8 : E121 : 정의되지 않은 변수 A : 1 E15 잘못된 식 : [A 1, A : 2] 라인 (19) : E121 : 정의되지 않은 변수 : dr . .' –

+0

vim 7.0을 사용하고 있습니다. –

+1

@divya : 그리드의 가로선과 세로선 사이의 거리를 인수로 지정하십시오. 예를 들어': call ToggleGrid (3, 5)'를 실행하십시오. –

관련 문제