พลิกหรือย้อนกลับลำดับบรรทัดใน Notepad ++


95

ฉันต้องการพลิกคำสั่งซื้อของเอกสารที่มีมากกว่า 500 บรรทัด บรรทัดไม่ได้เป็นเพียงตัวเลขบางตัวมีข้อความและอักขระอื่น ๆ มันเป็นส่วนผสม

ตัวอย่าง:

บรรทัด 1
บรรทัด 2
บรรทัดที่ 3
บรรทัด 4
บรรทัดที่ 5
บรรทัดที่ 6

ซึ่งฉันต้องการพลิกกลับด้านและมีลักษณะดังนี้จากล่างขึ้นบน:

บรรทัดที่ 6
บรรทัดที่ 5
บรรทัด 4
บรรทัดที่ 3
บรรทัด 2
บรรทัด 1

หมายความว่าคุณต้องการให้ตัวเลขบนระยะขอบซ้ายนับถอยหลังหรือคุณต้องการกลับเนื้อหาจริงของไฟล์ของคุณ?
Maxpm

2
@Maxpm เนื้อหาจริงของไฟล์ที่จะกลับรายการ
Danpe


ที่เกี่ยวข้อง (แต่ไม่ซ้ำกัน): วิธีการย้อนกลับไฟล์ข้อความบน Windows
Peter Mortensen

คำตอบ:


102

โซลูชันไม่ต้องการซอฟต์แวร์อื่นยกเว้นปลั๊กอิน TextFX ที่รวมอยู่ในปกติ:

  1. แก้ไข> เลือกทั้งหมด
  2. TextFX> เครื่องมือ TextFX> แทรกหมายเลขบรรทัด
  3. หากเลือก TextFX> เครื่องมือ TextFX> + เรียงลำดับจากน้อยไปมากให้ยกเลิกการเลือก
  4. TextFX> เครื่องมือ TextFX> เรียงลำดับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (ที่คอลัมน์)
  5. TextFX> เครื่องมือ TextFX> ลบหมายเลขบรรทัดหรือคำแรก

6
หากไม่พบ TextFX ให้ไปที่: ปลั๊กอิน»ตัวจัดการปลั๊กอิน»แสดงตัวจัดการปลั๊กอิน»ตรวจสอบ "ตัวอักษร TextFX" คลิกติดตั้ง ดูที่นี่: textfx.no-ip.com/textfx
Kalpesh Panchal

- สิ่งที่ทำงานคือ "เรียงลำดับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่" ในตอนที่ 4)
30

@ Theta30: เดาข้อความ UI มีการเปลี่ยนแปลงตั้งแต่รุ่นที่ฉันใช้
Gnubie

2
สำหรับผู้ที่ใช้ Eclipse ดู คำตอบสำหรับการทำสิ่งนี้ได้ง่ายยิ่งขึ้น (ฉันรู้ว่าคำถามดั้งเดิมขอให้ Notepad ++ แต่คิดว่านี่น่าจะคุ้มค่าสำหรับผู้ที่สะดุดสิ่งนี้)
Steve Chambers

2
TextFX ไม่ใช่ปลั๊กอินที่รองรับในรุ่น 64 บิต
Rhyous

34

สิ่งนี้สามารถทำได้ใน Notepad ++ โดยไม่มีปลั๊กอิน TextFX มันเป็นไปตามกลยุทธ์เดียวกันของคำตอบที่ยอมรับ แต่ใช้ฟังก์ชันการทำงานดั้งเดิม มันทำดังนี้

  1. แก้ไข> เลือกทั้งหมด
  2. แก้ไข> ตัวแก้ไขคอลัมน์ ... > เลือกหมายเลขที่จะแทรก> ตั้งค่าหมายเลขเริ่มต้นเป็น 1> ตั้งค่าเพิ่มเป็น 1> ตรวจสอบศูนย์นำหน้า> คลิกตกลง

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

  1. แก้ไข> การทำงานของสาย> เรียงลำดับบรรทัดในลำดับมากไปน้อย แก้ไข:อัปเดตล่าสุดเพิ่มตัวเลือกการเรียงลำดับพิเศษตัวเลือก: เรียงลำดับบรรทัดเรียงจากมากไปน้อยดูเหมือนว่าจะทำงาน

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

  1. ลบหมายเลขบรรทัดผ่านการเลือกกล่อง (Alt + คลิกซ้ายลากหรือเลือก Alt + Shift) หรือค้นหา / แทนที่

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


1
ใช้งานได้ แต่มีสองสิ่งที่ต้องคำนึงถึง: 1 - จะแทรกหมายเลขพิเศษสำหรับแถวสุดท้าย (ว่าง) ดังนั้นคุณต้องลบออกก่อนที่จะเรียงลำดับ 2- หากรายการของคุณเริ่มต้นด้วยตัวเลขคุณสามารถยุ่งหมายเลขที่แทรกด้วยหมายเลขของคุณเพราะมันไม่ได้แทรกช่องว่างหลังจากใส่หมายเลขดังนั้นคุณควรระวังในกรณีนี้
Francisco Alvarado

ไม่สามารถทำซ้ำขั้นตอนที่ 3 ได้เวอร์ชันใหม่มีการเปลี่ยนแปลงถ้อยคำและตัวเลือกอะไรก็ได้ที่ไม่สามารถใช้งานได้
Ooker

1
@TrevorYoung - คุณจะบ่นเกี่ยวกับภาพที่ถูกเพิ่มโดยอื่นใช้ ฉันเพิ่งแก้ไขการจัดรูปแบบของคำตอบและอนุมัติการแก้ไข หากคุณพบว่ารูปภาพไม่ช่วยเหลือให้ลบออกแล้วคุณเป็นผู้เขียนคำตอบ นอกเหนือจากภาพที่เป็นที่ยอมรับแก้ไข (คือคำตอบที่ดีกว่าที่มีภาพมากกว่าโดยไม่ได้)
Ramhound

1
@Ramhound คำขอโทษของฉัน เมื่อดูที่ประวัติการแก้ไขฉันคิดว่าคุณได้เพิ่มรูปภาพแล้ว แต่ไม่ใช่ในกรณีนี้ ฉันไม่มีปัญหากับภาพที่อยู่ที่นั่น แต่พยายามที่จะให้คำแนะนำกับคนที่เพิ่มว่ามันอาจจะดีกว่าถ้าคำแนะนำที่ได้รับนั้นทำแทน
Trevor Young

1
นี่มันแปลก แต่ใช้งานได้ ...
kayleeFrye_onDeck

6

เนื่องจากเราให้ตัวอย่างรหัสถ้าคุณใช้ Windows 7 หรือคุณติดตั้ง PowerShell ใน Windows รุ่นอื่นแล้ว:

$foo = New-Object System.collections.arraylist;
$foo.AddRange($(Get-Content 'C:\Path\To\File.txt));
$foo.Reverse();
$foo | Out-File C:\Path\To\File.txt

หรือสำหรับคำตอบที่ไม่มีการเข้ารหัสดาวน์โหลดgVimเปิดไฟล์และประเภท:

:g/^/m0

ฉันอยู่บน Windows 7 ฉันจะวางรหัสนั้นได้ที่ไหน นี่เป็นสิ่งที่น่าดึงดูดใจจริงๆ
Danpe

2
เปิดเมนูเริ่มและพิมพ์ Powershell ดับเบิลคลิกที่ "Windows Powershell" มันจะเปิดพรอมต์คำสั่ง เรียกใช้ที่นั่น นอกจากนี้ยังมีและ IDE (แม้ว่าพวกเขาเรียกมันว่า ISE - Integrated Script Editor) แต่ฉันทำงานส่วนใหญ่ที่พรอมต์คำสั่งและฉันใช้ GVim สำหรับการแก้ไขสคริปต์
EBGreen

สิ่งนี้จะรวมเข้ากับ Notepad ++ ได้อย่างไร? (ชื่อของคำถามคือ"คำสั่งซื้อพลิกหรือย้อนกลับใน Notepad ++" .)
Peter Mortensen

นั่นคือเหตุผลที่มันเป็นความคิดเห็นมากกว่าคำตอบ มันเป็นวิธีทางเลือกในการบรรลุสิ่งที่ฉันคิดว่าผู้ใช้ต้องการมากกว่าคำตอบสำหรับคำถามที่แท้จริง
EBGreen

5

หากคุณรู้สึกสะดวกสบายในการคอมไพล์ C ++ สิ่งนี้น่าจะเป็นเคล็ดลับ โดยทั่วไปฉันใส่แต่ละบรรทัดของไฟล์ในเวคเตอร์และส่งออกไปยังไฟล์ใหม่โดยใช้ตัววนซ้ำย้อนกลับ

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> fileLines;
    std::string              currLine;
    std::ifstream            inFile("input.txt");
    if (inFile.is_open())
    {
        while (inFile.good())
        {
            std::getline(inFile, currLine);
            fileLines.push_back(currLine);
        }
        inFile.close();
    }
    else
    {
        std::cout << "Error - could not open input file!\n";
        return 1;
    }

    std::ofstream outFile("output.txt");
    if (outFile.is_open())
    {
        std::vector<std::string>::reverse_iterator rIt;
        for (rIt = fileLines.rbegin(); rIt < fileLines.rend(); rIt++)
        {
            outFile << *rIt;
        }
        outFile.close();
    }
    else
    {
        std::cout << "Error - could not open output file!\n";
        return 1;
    }
    return 0;
}

หากไฟล์เอาต์พุตไม่มีการแบ่งบรรทัดระหว่างบรรทัดดังนั้นให้เปลี่ยนoutFile << *rIt;เป็น outFile << *rIt << "\r\n";เพื่อให้มีการเพิ่มการแบ่งบรรทัด (ไม่ต้องใส่\rหากคุณอยู่ใน Unix / Linux)

คำเตือน: ฉันยังไม่ได้ทดสอบรหัสนี้ (ฉันเขียนมันอย่างรวดเร็วจริงใน Notepad) แต่มันก็ดูเป็นไปได้


ขอบคุณผู้ชาย :) แต่ฉัน allready ใช้รหัสของฉัน แต่ที่สามารถเป็นประโยชน์มากสำหรับคนอื่น ๆ Btw บางทีฉันจะเขียนปลั๊กอิน Notepad ++ สำหรับสิ่งนั้น ไฟล์ไหนที่พวกเขาใช้ใน notepad ++ ปลั๊กอิน?
Danpe

@Danpe ปลั๊กอิน Notepad ++ ส่วนใหญ่เขียนด้วยภาษา C ++ แต่ในทางเทคนิคสามารถขยายไปยังภาษาอื่นที่มีความสามารถในการรวบรวม. DLL (และด้วยการผูก API ที่เหมาะสม)
พัฒนา

ดังนั้นผมจึงคิดว่าคุณเพิ่งสร้างปลั๊กอิน :)
Danpe

สิ่งนี้จะรวมเข้ากับ Notepad ++ ได้อย่างไร? (ชื่อของคำถามคือ"คำสั่งพลิกหรือย้อนกลับบรรทัดใน Notepad ++" .)
Peter Mortensen


2

คุณสามารถทำได้ทางออนไลน์บนเว็บไซต์http://textmechanic.co/Sort-Text-Lines.html


1
เว็บไซต์ใช้งานไม่ได้ดูเหมือนว่าจะย้ายไปที่ textmechanic.co/Sort-Text-Lines.html
George Chalhoub

1
@georgechalhoub ขอบคุณฉันอัพเดตคำตอบแล้ว
Franck Dernoncourt

สิ่งนี้จะรวมเข้ากับ Notepad ++ ได้อย่างไร? (ชื่อของคำถามคือ"คำสั่งซื้อพลิกหรือย้อนกลับใน Notepad ++" .)
Peter Mortensen

1

นี่คือรหัส C # .NET สำหรับฉันเพิ่งเขียน :)

class Program
{
    static void Main(string[] args)
    {
        try
        {
            String line;
            Stack<String> lines = new Stack<string>();
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("test.txt"))
            {
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                    lines.Push(line);
            }

            // Create a writer and open the file
            TextWriter tw = new StreamWriter("test2.txt");
            // Write a line of text to the file
            while (lines.Count > 0)
                tw.WriteLine(lines.Pop());
            // close the stream
            tw.Close();
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read/written:");
            Console.WriteLine(e.Message);
        }
    }
}

ทำไมคุณต้องการunsafeคำหลักMainที่นี่
พัฒนา

@ ทำลายฉันไม่รู้ว่ามันไปถึงที่นั่นได้อย่างไร: O lol ได้รับการแก้ไข
Danpe

1
เราจะรวมสิ่งนี้เข้ากับแผ่นจดบันทึก ++ ได้อย่างไร
Teoman shipahi

สิ่งนี้จะรวมเข้ากับ Notepad ++ ได้อย่างไร? (ชื่อของคำถามคือ"คำสั่งซื้อพลิกหรือย้อนกลับใน Notepad ++" .)
Peter Mortensen

0

นี่คือวิธีที่ไม่ใช่การเข้ารหัส:

  1. ดาวน์โหลด / ติดตั้ง TextPad ทดลองใช้ฟรี
  2. เปิดโปรแกรมสเปรดชีต (เช่น Excel) และสร้างตัวเลข 1,000 ถึง 1500 ในคอลัมน์ "A" โดยใส่ "1000" ในเซลล์ A1 แล้ววาง A1 + 1 ในเซลล์ A2 แล้วคัดลอกลงไปที่ A500
  3. เปิดไฟล์ข้อความของคุณใน TextPad
  4. เปลี่ยนเป็น "โหมดบล็อก" ใน TextPad
  5. วางคอลัมน์ A จากสเปรดชีตลงใน TextPad (ทั้งหมดจะจบลงที่ขอบด้านซ้ายเนื่องจากโหมดบล็อก)
  6. ใช้คุณสมบัติการจัดเรียง TextPad จากมากไปน้อย
  7. ใช้การลบโหมดบล็อก TextPad เพื่อกำจัดตัวเลข

2
ดีถ้าคุณจะใช้ excel อยู่ดีเพียงแค่คัดลอกเนื้อหาไฟล์จากตัวแก้ไขใด ๆ แล้ววางไปที่ excel กรอกข้อมูลชุดคอลัมน์ถัดไปด้วยชุดตัวเลข เลือกทั้งสองคอลัมน์และเรียงลำดับจากมากไปน้อยในคอลัมน์ตัวเลข คัดลอกคอลัมน์ข้อความและวางกลับไปที่ตัวแก้ไข
EBGreen

@EBGreen คุณถูกต้อง ฉันเป็นคนงี่เง่า คุณเพียงแค่ต้องระวังเพราะ Excel จะเปลี่ยนข้อมูลของคุณ (ยุ่งกับตัวเลขวันที่และอื่น ๆ )
เดล

สิ่งนี้จะรวมเข้ากับ Notepad ++ ได้อย่างไร? (ชื่อของคำถามคือ"คำสั่งซื้อพลิกหรือย้อนกลับใน Notepad ++" .)
Peter Mortensen

@PeterMortensen, คำถามเดิมกล่าวว่า "ถ้ามันไม่สามารถใช้ได้ใน Notepad ++ แล้วซอฟต์แวร์อื่น ๆ ก็ควรจะดีเช่นกัน :)"
Dale

0

หากคุณต้องการทำสิ่งนี้โดยอัตโนมัติบน Notepad ++ ได้ด้วยคลิกเดียว:

  1. รับปลั๊กอินสคริปต์ Python นี้
  2. เพิ่มรหัสด้านล่างและบันทึกเป็นไฟล์. py ในโฟลเดอร์สคริปต์ Python (เพื่อทราบตำแหน่งของโฟลเดอร์นี้คลิกแท็บปลั๊กอินจากนั้นสคริปต์ Python และสคริปต์ใหม่)

ความรุ่งโรจน์ทั้งหมดของReck Dickhard !

หากต้องการเพิ่มในเมนูบริบท:

หากคุณคลิกที่แท็บปลั๊กอิน→ สคริปต์ Python →การกำหนดค่าคุณสามารถกำหนดสคริปต์ให้กับไอคอนแถบเครื่องมือหรือไปที่เมนู Python Script (หากคุณกำหนดสคริปต์ให้กับเมนูจากนั้นสคริปต์จะปรากฏขึ้นทันที แต่คุณจะไม่สามารถกำหนดทางลัดให้กับมันได้จนกว่าครั้งต่อไปที่ Notepad ++ จะเริ่มขึ้นหากคุณกำหนดให้กับไอคอนแถบเครื่องมือจะปรากฏเฉพาะใน เริ่มถัดไปของ Notepad ++)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.