Vim ekranını Metne Çıkış


9

Acaba buna benzer bir komut var mı :TOhtml, sadece düz metin için ve tüm Vim ekranını temsil ediyor mu?

Örneğin, ekran göz önüne alındığında:

resim açıklamasını buraya girin

Aşağıdaki metin dosyasını oluşturur:

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

(bu, terminalden kopyala / yapıştır ile ve metni manuel olarak biçimlendirerek yapılmıştır)

Bunu yapmak için herhangi bir seçenek bulamadım, bence hiç yok.

Mümkünse, Vim bunu nasıl başarabilir?


1
Hmm. Vim'in kendi penceresini "görmesinin" bir yolu olduğunu düşünmüyorum (yani, tamponların içeriğinin aksine yukarıdaki ekran görüntünüz). Ne kadar meraklı.
Sato Katsura

Benim için bu bir problem değil vi, terminal için - kuşkusuz fareyi kullanmaktan çok farklı değil! gnome-terminal"tümünü seçebilir", ancak yapıştırdıktan sonra yeniden biçimlendirmeniz gerektiğini kontrol etmedim. Başka bir çakışmada, tüm (kaydırılabilir) pencereyi bir dosyaya döken bir şey isterdim!
Yasa29

Farenizi kullanarak, üstteki sekme adları, alt taraftaki durum çubuğu ve kopyalanan ekranı yapıştırmak için dışarıdan sağ tıklamak da dahil olmak üzere tüm ekranı seçebilirsiniz. Bu benim için çalıştı. Linux'ta 7.2 vim kullandım.
SibiCoder

Yanıtlar:


5

Evet, bunu yapmanın bir yolu var! screenchar()İşlevi kullanabilirsiniz . itibaren: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.

Bunu bir komut dosyasında kullanmak için aşağıdakileri yapabilirsiniz:

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()

Bu güzel vimscript parçası Christian Brabandt tarafından yazılmıştır , bu yüzden yararlı bulursanız ona bir oy verin.

İşte bunun bir örneği. Bu işlevi vim penceremde çalıştırdığımda:

resim açıklamasını buraya girin

Bu metni aldım:

  1                                    |  1                                     
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
[No Name]            0,0-1          All|~                                       
  1                                    |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
~                                      |~                                       
[No Name]            0,0-1          All [No Name]             0,0-1          All
:call ScreenCapture()                                                           
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.