ฉันจะไพพ์เอาต์พุตคอนโซลโดยตรงไปยัง Notepad ได้อย่างไร


47

ฉันใช้แอปพลิเคชันบนพรอมต์คำสั่งหรือเชลล์Gitและฉันต้องการเอาท์พุทลงใน Notepad เพื่อการตรวจสอบและแก้ไขในภายหลังได้ง่ายขึ้น

ฉันลองสิ่งต่อไปนี้ แต่ฉันได้รับอินสแตนซ์ว่างเปล่าของ Notepad เสมอ:

diff file1.txt file2.txt | notepad

ฉันรู้ว่าฉันสามารถเปลี่ยนเส้นทางการส่งออกไปยังไฟล์อื่นแล้วเปิดไฟล์ใน Notepad ฉันต้องการหลีกเลี่ยงขั้นตอนพิเศษเพราะฉันเพิ่งใช้ piping ในVimหรือน้อยกว่าในระบบที่ไม่ใช่ Windows


2
แน่นอนว่าคุณสามารถไปmoreที่ Windows ได้เช่นกัน
Gabe

1
เหตุใดจึงไม่ไพพ์ทูไฟล์และเพียงแค่เชลล์รันพา ธ ไฟล์ใหม่ - ให้ระบบปฏิบัติการจัดการแอปพลิเคชันการนำเสนอ มันมีที่จะ Notepad?
Gusdor

@Gusdor คำถามส่วนใหญ่เกี่ยวกับการหลีกเลี่ยงการสร้างไฟล์ (ชั่วคราว)
Der Hochstapler

1
ฟังก์ชั่นของ Notepad นั้นมี จำกัด ดังนั้นคุณแทบจะไม่สามารถทำอะไรได้เลย เมื่อคุณคุ้นเคยvimแล้วทำไมไม่ลองติดตั้งดูล่ะ?
Siyuan Ren

@CR ฉันสามารถทำได้ในคอมพิวเตอร์ของฉันเอง แต่ฉันก็ทำงานกับคอมพิวเตอร์เป็นประจำซึ่งฉันไม่ได้เป็นเจ้าของ ดังนั้นการรู้ว่ามีตัวเลือกใดบ้างที่ไม่มีการติดตั้งซอฟต์แวร์บุคคลที่สาม
Der Hochstapler

คำตอบ:


63

จากสิ่งที่ฉันสามารถบอกได้ว่าไม่มีทางที่จะไปป์ลงใน Notepad ได้โดยตรง

อย่างไรก็ตามคุณสามารถไปป์clipและวางใน notepad ได้เช่น:

 diff file1.txt file2.txt | clip && notepad

จากนั้นเพียงกดCtrl+ Vใน Notepad


3
มันจะทำงานหากคุณต้องการเปลี่ยนเส้นทางออกไป file3.txt แล้ว&& notepad file3.txt?
Konerak

4
@ Konerak ใช่ว่าจะทำงานและนั่นคือสิ่งที่ฉันพยายามที่จะหลีกเลี่ยง (ตามที่อธิบายไว้ในคำถาม);)
Der Hochstapler

32

พิจารณาใช้Vimหรือในกรณีของคุณ gVim หากคุณต้องการสภาพแวดล้อมแบบกราฟิก

จากนั้นคุณสามารถไพพ์ลงไปด้วยเครื่องหมายยัติภังค์เดียวเป็นอาร์กิวเมนต์ซึ่งสั่งให้ Vim / gVim อ่านจากอินพุตมาตรฐาน

diff file1.txt file2.txt | gvim -

1
ติดตั้งมัน Notepad มี จำกัด จริงๆคุณไม่สามารถใช้มันได้ คุณสามารถมีไว้ในแอพแบบพกพา
higuita

3
ยังสามารถทำได้จากภายในกลุ่ม::%!diff file1.txt file2.txt
SlightlyCuban

@TankorSmash ดังนั้นฉัน แต่นั่นไม่ใช่ประเด็นของคำถาม;) สำหรับมืออาชีพและการอภิปรายที่เกี่ยวข้องกับกลุ่ม (หรือหัวข้ออื่น ๆ ) โปรดหาฉันในการแชทผู้ใช้ขั้นสูงหัวข้อความเห็นไม่ใช่วิธีที่ดีในการสนทนา :(
Der Hochstapler

1
@OliverSalzburg ฉันพยายามแนะนำ gvim ที่มีอยู่ใน Windows เนื่องจากฉันเข้าใจความคิดเห็นของคุณเพื่อแสดงว่าไม่ได้เป็นเช่นนั้น ฉันผิดไป.
TankorSmash

-มักจะใช้เพื่อหมายถึง "อ่านจาก stdin" ดังนั้นนี้ไม่ จำกัด vimอย่างเคร่งครัด บรรณาธิการอื่น ๆ ใช้-i(เช่นkate)
บาคุริว

8

นี่เป็นโปรแกรม Windows สั้น ๆ ที่ทำงานได้อย่างถูกต้อง (โดยไม่ต้องปิดบังคลิปบอร์ด) ควรปรับให้เข้ากับ PowerShell และฉันอาจอัปเดตคำตอบนี้ถ้าฉันมีเวลา แต่คุณก็สามารถใช้โปรแกรมนั้นได้โดยตรง

แล้ว PowerShell ล่ะ ไม่จำเป็นต้องติดตั้งแอปพลิเคชันอื่น น่าเสียดายที่คุณจะต้องสร้างไฟล์สคริปต์ที่ไหนสักแห่งในPATH...

เวอร์ชั่นสั้นที่คุณสามารถใช้ได้

หากคุณสร้างไฟล์แบตช์ (เช่นShowInNotepad.bat) ด้วยเนื้อหาต่อไปนี้และวางไว้ในที่ของคุณPATH:

@echo off
clip
powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');

คุณสามารถโทรecho blah | ShowInNotepadจากที่ใดก็ได้!

ทราบว่านี้ไม่คิดว่าคุณกำลังใช้รุ่นล่าสุด-ish ของ Windows (Vista +) และยังไม่ได้พิการ PowerShell หรือถอนการติดตั้งกรอบ NET กล่าวอีกนัยหนึ่งการติดตั้งเริ่มต้นของ Windows จะใช้งานได้


คำอธิบายและทางเลือกที่มีความยาว

วิธีที่ง่ายที่สุดที่ฉันคิดได้ก็คือทำให้การวาง ( Ctrl+ V) เป็นไปโดยอัตโนมัติ มีคำตอบอื่นอย่างน้อยหนึ่งคำตอบที่ทำอยู่แล้ว แต่คำตอบนั้นใช้ AHK - คุณอาจโชคดีกว่าที่ได้ PowerShell มาทำงานในสภาพแวดล้อมขององค์กรที่ถูกล็อค

มาต่อด้วยสคริปต์ใช่ไหม

#start notepad, get process object (to get pid later)
$process = Start-Process -PassThru notepad;

# activate Notepad window
# based on http://stackoverflow.com/a/4994020/1030702
# SW_SHOW activates and shows a window http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
$SW_SHOW = 5;
$sig = '[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';
Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;
[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) | Out-Null;

# send a "Ctrl+V" keystroke to the active window
# from http://stackoverflow.com/a/17851491/1030702
Add-Type -AssemblyName System.Windows.Forms;
[System.Windows.Forms.SendKeys]::SendWait('^V');

มันค่อนข้างตรงไปตรงมาดังนั้นฉันจะไม่สนใจอธิบายสคริปต์มากกว่าความคิดเห็นที่ได้ทำไปแล้ว

การใช้

ในการใช้งานคุณเพียงแค่วางสคริปต์ใน.ps1ไฟล์ (เช่นShowInNotepad.ps1) วางไว้ที่ใดที่หนึ่งของคุณPATHแล้วโทรpowershell ShowInNotepad.ps1หลังจากวางข้อความที่คุณต้องการแสดงในคลิปบอร์ด

ตัวอย่าง:

echo blah | clip && powershell ShowInNotepad.ps1

น่าเสียดายที่บางครั้งการเรียกใช้สคริปต์ PowerShell อาจทำได้ยาก (นโยบายการดำเนินการและทั้งหมด) ดังนั้นฉันจึงย่อสคริปต์นี้ให้เป็นหนึ่งซับที่คุณสามารถโทรโดยตรงจาก Command Prompt หรือแม้แต่วางลงในไฟล์แบทช์:

powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');

หากคุณสร้างไฟล์แบตช์ (เช่นShowInNotepad.bat) ด้วยเนื้อหาต่อไปนี้และวางไว้ในที่ของคุณPATH:

@echo off
clip
powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');

คุณสามารถโทรecho blah | ShowInNotepadจากที่ใดก็ได้!


สุจริตถ้าคุณกำลังจะเขียนสคริปต์ PS ฉันจะสร้างไฟล์ที่มีชื่อ Guid ในโฟลเดอร์ไฟล์ temp และลบทิ้งเมื่อฉันทำเสร็จแล้ว การวางโดยอัตโนมัติดูเหมือนจะเปราะเกินไป (เช่นถ้าคุณเสียสมาธิในเวลาที่ไม่ถูกต้องหรืออะไรบางอย่าง)?
Casey

@emodendroket แต่น่าเสียดายที่เมื่อคุณพยายามบังคับให้สตรีมอินพุตเข้าสู่โปรแกรมที่ไม่ได้รับการสนับสนุนตามปกติจะไม่มีสิ่งใดที่สะอาดจริงๆ การสร้างไฟล์ temp มีข้อเสีย (เล็กน้อย) ของตัวเอง: คุณจะไม่ได้รับ "ไฟล์ใหม่" ดังนั้นSaveและการออกจากการทำงานที่ปรับเปลี่ยนจะแตกต่างกัน ย่อมาจากการแทนที่ Notepad เองหรือฉีดข้อความโดยตรงไปยังตัวควบคุมการแก้ไขไม่มีตัวเลือกอื่นอีกมากมาย แน่นอนวิธีการนี้มีข้อเสียเปรียบของเนื้อหาคลิปบอร์ดที่อุดตัน (แม้ว่าสิ่งเหล่านั้นควรจะเป็น ephemeral อยู่ดี) ฉันไม่คิดว่าการเสียสมาธิเป็นประเด็นสำคัญ มันเป็น ...
บ๊อบ

... สภาพการแข่งขันที่ไม่น่าจะเกิดขึ้นอย่างมาก (ระหว่างShowWindowและการกดแป้นพิมพ์) และวิธีนี้ต้องใช้การตั้งค่าอีกเล็กน้อย (การสร้างไฟล์สคริปต์) เพื่อใช้ใช่
Bob

5

วิธีการเกี่ยวกับการใช้AutoHotkey ?

บันทึกสิ่งต่อไปนี้เป็นstdin.ahkและวางไว้ในไดเรกทอรี AutoHotkey ของคุณ:

StdIn(max_chars=0xfff)
{
    static hStdIn=-1
    ; The following is for vanilla compatibility
    ptrtype := (A_PtrSize = 8) ? "ptr" : "uint"

    if (hStdIn = -1)
    {
        hStdIn := DllCall("GetStdHandle", "UInt", -10,  ptrtype) ; -10=STD_INPUT_HANDLE
        if ErrorLevel
            return 0
    }

    max_chars := VarSetCapacity(text, max_chars*(!!A_IsUnicode+1), 0)

    ret := DllCall("ReadFile"
        ,  ptrtype, hStdIn        ; hFile
        ,  "Str", text          ; lpBuffer
        , "UInt", max_chars*(!!A_IsUnicode+1)     ; nNumberOfBytesToRead
        , "UInt*", bytesRead    ; lpNumberOfBytesRead
        ,  ptrtype, 0)            ; lpOverlapped

    return text
}

loop 
{
    sleep 100 ;wait for data
    Buffer:=StdIn()
    PipeText:=PipeText . Buffer
    IfWinActive Untitled - Notepad
        {
        SendInput {Raw}%PipeText%
        PipeText = 
        }
}

จากนั้นบรรทัดคำสั่ง:

ping -t www.google.com | AutoHotkeyA32.exe stdin.ahk

ท่อผลลัพธ์ของคำสั่งลงใน Notepad Untitled - Notepadดังนั้นตราบใดที่หน้าต่างที่เปิดอยู่และบรรดาศักดิ์ ในกรณีที่หน้าต่างไม่ได้เปิดใช้งานจะมีการบัฟเฟอร์ในพื้นหลังอย่างร่าเริงจนกว่าหน้าต่างจะทำงาน คุณสามารถไปที่โปรแกรมอื่นและมันจะทำการบัฟเฟอร์ต่อไปอีกครั้ง

ดูเหมือนว่าจะตายเมื่อโปรแกรมส่งออกไปยังอินพุตมาตรฐานของเราตาย ...

(สำหรับข้อมูลรหัส stdin () ครึ่งหนึ่งเป็นครึ่งนิ้วจากที่นี่ )


...ว้าว. หากคุณกำลังจะไปที่ขอบเขตเช่นกันอาจจะเขียนโปรแกรมรวบรวมทั้งหมด! อาจจะมีประสิทธิภาพมากขึ้นเช่นกัน: P โหวตให้สำหรับความพยายาม
Bob

ลงคะแนนจากฉันฉันกลัว การครอบงำด้วยความรู้สึกคลาสสิค ใครเป็นผู้ควบคุมเวอร์ชันของสคริปต์นี้ autohotkey จำเป็นต้องมีใบอนุญาตสำหรับการใช้งานเชิงพาณิชย์หรือไม่? ใครเป็นคนตรวจสอบ
Gusdor

7
@Gusdor อินเทอร์เน็ตทั้งหมดเต็มไปด้วยข้อมูลโค้ดที่ไม่ได้ควบคุมเวอร์ชัน เราได้รับประโยชน์จากการมีประวัติการแก้ไขสำหรับโพสต์นี้ ฉันยังไม่เห็นด้วยว่าการให้สิทธิ์ใช้งานเชิงพาณิชย์เกี่ยวข้องกับคำถามนี้อย่างไร ผู้คนจำนวนมากใช้ AHK และพวกเขาอาจพบว่าคำตอบนี้มีประโยชน์
slhck

@slhck ฉันเพียงแค่พูดถึงข้อผิดพลาดของการแก้ปัญหานี้ไม่ถูกต้อง
Gusdor

@slhck: เนื้อหาในเว็บไซต์นี้ได้รับการคุ้มครองโดย Creative Commons
Brian

4

นี่เป็นไปได้โดยสิ้นเชิง ฉันแค่ลองมัน ฉันสมมติว่า Notepad ได้รับการตั้งค่าให้เปิดไฟล์ txt ตามค่าเริ่มต้น:

diff file1.txt file2.txt > output.txt && start output.txt && timeout /T 3 && del output.txt

ตกลงคุณกำลังสร้างไฟล์ทางเทคนิค แต่ไม่ได้รับการบันทึก

การเพิ่มไปที่อื่น ๆ ก็เป็นตัวเลือกเช่นกัน


4
ระวัง - ถ้าคุณมีสิ่งoutput.txtนี้จะปิดบังมัน %temp%/somerandomstring.txtเล็กน้อยที่ปลอดภัยที่จะใช้
Bob

มันปลอดภัยมากขึ้นในการบันทึกไฟล์ที่ส่งออกในไดเรกทอรีชั่วคราว - ใช้เวลาดูที่นี้คำตอบ
Lu55

1

นี่เป็นวิธีที่น่าเกลียด แต่มีประสิทธิภาพในการทำสิ่งนี้:

$OutputString = 'Hello World'
$WScript = New-Object -ComObject 'wscript.shell'
$WScript.Run('notepad.exe') | Out-Null
do 
    {
    Start-Sleep -Milliseconds 100
    }
until ($WScript.AppActivate('notepad'))
$WScript.SendKeys($OutputString)

เพียงให้แน่ใจว่าจะส่งออกข้อความเท่านั้น ข้อมูลอื่น ๆ อาจถูกตีความว่าเป็นตัวควบคุม (CTRL, ALT, DEL, ฯลฯ )


0

ต่อไปนี้เป็นโซลูชันที่ใช้ VBScript สองตัวที่อาจใช้งานได้ (แม้ว่าจะ .. พวกเขาพึ่งพาแอพที่เปิดตรงเวลา):

pipe2key.vbs - เปิดแอปพลิเคชั่นที่ระบุว่าเป็นอาร์กิวเมนต์แรกจากนั้นส่ง StdIn เป็น keystrokes จำเป็นต้องใช้กับ cscript.exe เนื่องจาก wscript ไม่ได้ให้การเข้าถึง StdIn อาจจะค่อนข้างช้าสำหรับเอกสารที่มีความยาว แต่จะไม่ปิดบังคลิปบอร์ด

Set inPipe=wScript.StdIn
Set wShell=wScript.CreateObject("wscript.shell")
wShell.Run wScript.Arguments(0), 5 ' Execute specified app, foreground it's window
wScript.Sleep 500 ' Wait for app to load
KeysToEscape="{}[]()^+%"
KeysToDrop=vbLf
While Not inPipe.AtEndOfStream
    keyChar=inPipe.Read(1)
    If InStr(KeysToDrop, keyChar) = 0 Then
        If InStr(KeysToEscape, keyChar) > 0 Then
            wShell.SendKeys "{" & keyChar & "}"
        Else
            wShell.SendKeys keyChar
        End If
    End If
Wend

ตัวอย่างการใช้งาน: diff file1.txt file2.txt | cscript pipe2key.vbs notepad.exe

หรือ pasteinto.vbs ดำเนินการ CTRL-V โดยอัตโนมัติหลังจากเรียกใช้แอป (เช่นใช้คำสั่ง 'คลิป' ตามที่กล่าวไว้ในคำตอบก่อนหน้า) เร็วกว่าและสะอาดกว่า (ในความคิดของฉัน) มากกว่า pipe2key.vbs แต่กระบวนการจะเขียนทับคลิปบอร์ด

Set wShell=wScript.CreateObject("wscript.shell")
wShell.Run wScript.Arguments(0), 5 ' Execute specified app, foreground it's window
wScript.Sleep 500 ' Wait for app to load
wShell.SendKeys "^v"

ตัวอย่างการใช้งาน: diff file1.txt file2.txt | clip && pasteinto notepad.exe


-1

บางสิ่งเช่นนี้ "อาจ" ทำงาน

อ๊ะไม่รู้ว่านี่เป็นสิ่งที่คุณต้องทำด้วยตนเองทุกครั้ง (จากเสียงของมัน) คุณอาจสร้างแมโครขึ้นมาหรือทำบางอย่างให้คุณในแต่ละครั้งเพื่อเร่งกระบวนการ ไม่แน่ใจในอันนั้น

diff file1.txt file2.txt > file.txt | sleep 1 | notepad.exe file.txt | rm file.txt

มันจะต้องเขียนเนื้อหาต่าง ๆ ลงใน file.txt ให้เสร็จเพื่อที่จะทำการโหลด diff ทั้งหมดซึ่งฉันไม่แน่ใจว่ามันจะทำหรือไม่ อาจมีวิธีหยุดชั่วคราวระหว่างการดำเนินการไปป์หากเป็นกรณี


5
มีเป้าหมายที่จะไม่สร้างไฟล์ชั่วคราวและผมค่อนข้างแน่ใจว่ามีสิ่งผิดปกติกับไวยากรณ์ของคุณมี;)
Der Hochstapler

"เพื่อความสะดวกในการตรวจสอบและแก้ไขในภายหลัง" ฉันคิดว่านั่นคือสิ่งที่คุณต้องการ? และตามที่ Rev1.0 ชี้และแก้ไขให้ใช้งานได้ นี่สำหรับ dos แต่ฉันไม่แน่ใจว่า cygwin จะได้ผลลัพธ์เหมือนกันหรือไม่
Codezilla

3
ฉันเดาว่าเพราะ & จะเพียงพอเพราะจริงๆแล้วไม่มีสิ่งใดที่จะต้อง "ส่ง" ระหว่างการโทรเหล่านั้น
Rev1.0

3
@ Rev1.0 ถูกต้อง &, &&และ||เป็นผู้ประกอบการคำสั่งเข้าด้วยกัน ทั้ง 3 ทำงานแตกต่างกันไปในวิธีดำเนินการหากคำสั่งสร้างค่าส่งคืนที่ไม่ใช่ 0 |แตกต่างอย่างสิ้นเชิงเนื่องจากใช้เพื่อส่งออกไพพ์จากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่ง ผลลัพธ์อาจเป็นสิ่งที่คุณต้องการ แต่การใช้ตัวดำเนินการโยงอย่างใดอย่างหนึ่งทำให้เจตนาชัดเจนขึ้นเนื่องจากไม่ต้องการการวางท่อจริงในตัวอย่างนั้น สำหรับการอ้างอิงเพิ่มเติม: microsoft.com/resources/documentation/windows/xp/all/proddocs/ …
Der Hochstapler

1
@Codezilla ฉันคิดว่าความคิดในโพสต์ของฉันค่อนข้างคล้ายกับของคุณ แต่มันเป็นไวยากรณ์คำสั่งที่ถูกต้อง
Casey

-3

ภาษาของฉันไม่ใช่ภาษาอังกฤษขอโทษสำหรับความผิดพลาด

ฉันคิดว่าคุณไม่สามารถใส่ผลลัพธ์ลงใน Notepad ที่เปิดได้โดยตรง อาจเป็นฉันผิดเกี่ยวกับมัน คุณต้องสร้างไฟล์ที่มีเอาต์พุตในนั้นเพื่อทำงานกับมัน ทีคำสั่งสามารถไพพ์เอาต์พุตไปที่สองหรืออาจเป็นคำสั่งหรือไฟล์เพิ่มเติมในเวลาเดียวกัน

ผู้ชายที

อย่าลืมที่จะใช้ >> แทน> เมื่อคุณ redurect เอาท์พุทเป็นไฟล์ > จะเขียนทับไฟล์ >> จะเพิ่มผลลัพธ์หลังจากสิ่งที่มีอยู่แล้วในไฟล์นั้น


1
teeมักจะไม่พร้อมใช้งานบน Windows และแม้ว่ามันจะไม่ช่วยปัญหานี้
Der Hochstapler

-4

คุณทำไม่ได้ Notepad มีข้อ จำกัด เกินไปสำหรับเรื่องนี้! ยังดีกว่า ... ติดตั้งCygwinและแก้ไขปัญหาทั้งหมด "การขาดคุณสมบัติ" ของ Windows จากนั้นคุณสามารถใช้คำสั่งที่คุณทราบแล้ว

AFAIK โปรแกรม Windows เพียงไม่กี่ตัวที่รองรับการวางท่อแม้ในกรณีที่เลวร้ายยิ่งสำหรับโปรแกรม GUI

คุณสามารถลองเปิดการร้องขอคุณสมบัติหนึ่งในโปรแกรม "windows tail" เพื่อเพิ่มได้


2
ฉันใช้ cygwin แล้ว นี่เป็นปัญหาเฉพาะสำหรับการโต้ตอบกับ Notepad
Der Hochstapler


1
@emodendroket บางครั้งคนใช้เครื่องมือที่ผิดสำหรับงาน ... และเกือบทุกกรณีแผ่นจดบันทึกเป็นเครื่องมือที่ไม่ถูกต้องมันง่ายและถูก จำกัด :)
higuita

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