จอแสดงผลที่เป็นกลุ่มส่งออกไปยังข้อความ


9

ฉันสงสัยว่ามีคำสั่งใดที่คล้ายกัน:TOhtmlหรือไม่ แต่สำหรับข้อความธรรมดาเท่านั้นและแทนการแสดง Vim ทั้งหมด

ตัวอย่างเช่นกำหนดจอแสดงผล:

ป้อนคำอธิบายรูปภาพที่นี่

มันจะสร้างไฟล์ข้อความต่อไปนี้:

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

(สิ่งนี้ทำได้ผ่านการคัดลอก / วางจาก terminal และจัดรูปแบบข้อความด้วยตนเอง)

ฉันไม่พบตัวเลือกใด ๆ เลยฉันคิดว่าไม่มีเลย

ถ้าเป็นไปได้จะเป็นกลุ่มได้อย่างไร?


1
อืมมม ฉันไม่คิดว่ามีวิธีใดที่ Vim จะ "เห็น" หน้าต่างของตัวเอง (นั่นคือภาพหน้าจอของคุณด้านบนซึ่งตรงข้ามกับเนื้อหาของบัฟเฟอร์) วิธีการอยากรู้อยากเห็น
Sato Katsura

สำหรับใจของฉันที่ไม่ใช่ปัญหาviแต่สำหรับเทอร์มินัล - ซึ่งเป็นที่ยอมรับไม่แตกต่างจากการใช้เมาส์มาก! gnome-terminalสามารถ "เลือกทั้งหมด" แต่ฉันยังไม่ได้ตรวจสอบว่าคุณจำเป็นต้องฟอร์แมตใหม่หลังจากวาง บนตะปูอีกฉันจะรักสิ่งที่ทิ้งทั้ง (เลื่อน) หน้าต่างไปยังแฟ้ม!
Law29

คุณสามารถใช้เมาส์เพื่อเลือกทั้งหน้าจอรวมถึงชื่อแท็บที่ด้านบนและแถบสถานะที่ด้านล่างและคลิกขวาด้านนอกเพื่อวางหน้าจอที่คัดลอก สิ่งนี้ใช้ได้สำหรับฉัน ฉันใช้ 7.2 vim ใน Linux
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ดังนั้นหากคุณพบว่ามีประโยชน์ไปให้เขา upvote

นี่คือตัวอย่างของการใช้งานจริง เมื่อฉันใช้ฟังก์ชั่นนี้ในหน้าต่าง 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.