Vim 디스플레이를 텍스트로 출력


9

와 비슷한 명령이 :TOhtml있지만 일반 텍스트 전용이며 전체 Vim 디스플레이를 나타내는 지 궁금합니다 .

예를 들어 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오

다음과 같은 텍스트 파일을 만듭니다.

  1 B                         1 a                     
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
 N  <me] [+]      100% 1:1  ~                         
  1 a                       ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
~                           ~                         
 N  <me] [+]      100% 1:1   N  <e] [+]      100% 1:1 

(이것은 터미널에서 복사 / 붙여 넣기를 통해 수행되었으며 수동으로 텍스트 서식을 지정했습니다)

나는 그렇게 할 수있는 옵션을 찾지 못했습니다. 아무것도 없다고 생각합니다.

가능하다면 Vim은 어떻게 이것을 달성 할 수 있습니까?


1
흠. Vim이 자체 창 (즉, 버퍼 내용과 반대되는 위의 스크린 샷)을 "볼"방법이 없다고 생각합니다. 정말 궁금합니다.
사토 카츠라

내 마음에 그것은 문제가 vi아니라 터미널에 대한 문제입니다 . 마우스를 사용하는 것과 크게 다르지 않습니다! gnome-terminal"모두 선택"할 수 있지만 붙여 넣은 후에 다시 포맷해야한다는 것을 확인하지 않았습니다. 다른 압정에서, 나는 (스크롤 가능한) 전체 창을 파일로 덤프 한 것을 좋아합니다!
Law29

마우스를 사용하여 상단의 탭 이름과 하단의 상태 표시 줄을 포함하여 전체 화면을 선택하고 외부를 마우스 오른쪽 버튼으로 클릭하여 복사 된 화면을 붙여 넣을 수 있습니다. 이것은 나를 위해 일했습니다. 나는 리눅스에서 7.2 vim을 사용했다.
SibiCoder

답변:


5

예,이 방법이 있습니다! 이 screenchar()기능을 사용할 수 있습니다 . 에서:help screenchar()

screenchar(row, col)                        *screenchar()*
        The result is a Number, which is the character at position
        [row, col] on the screen.  This works for every possible
        screen position, also status lines, window separators and the
        command line.  The top left position is row one, column one
        The character excludes composing characters.  For double-byte
        encodings it may only be the first byte.
        This is mainly to be used for testing.
        Returns -1 when row or col is out of range.

이것을 스크립트에서 사용하려면 다음을 수행하십시오.

fu! ScreenCapture()
    let array=[]
    for i in range(1,&lines)
        let row=''
        for j in range(1,&columns)
            let row.=nr2char(screenchar(i,j))
        endfor
        call add(array, row)
    endfor
    tabnew
    call setline(1,array)
endfu
com! ScreenCapture :call ScreenCapture()

이 사랑스러운 vimscript 조각은 Christian Brabandt에 의해 작성 되었으므로 유용하다고 생각되면 그에게 공감하십시오 .

다음은 실제로 사용되는 예입니다. vim 창에서이 기능을 실행했을 때 :

여기에 이미지 설명을 입력하십시오

나는이 텍스트를 얻었다 :

  1                                    |  1                                     
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
[No Name]            0,0-1          All|~                                       
  1                                    |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
[No Name]            0,0-1          All [No Name]             0,0-1          All
:call ScreenCapture()                                                           
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.