Baru-baru ini saya mengetahui bahwa jika saya memberi halaman file saya less
, saya dapat menekan v
dan membuka buffer di Emacs. Ini berfungsi selama saya memiliki variabel lingkungan yang $EDITOR
diatur dengan benar, yang dalam kasus saya, saya memilikinya sebagai:
export EDITOR='env TERM=xterm-256color emacs -nw'
Di atas memberi saya kemampuan untuk memuat emacs di dalam terminal yang berjalan less
.
Namun, trik di atas tidak berfungsi saat memipip perintah ke less
. Saat melakukan ini, less
komplain dengan pesan berikut:
Cannot edit standard input (press RETURN)
Pertanyaan saya adalah, mengapa ini terjadi? Tetapi yang paling penting, apakah ada solusi untuk itu ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
jelas. Mengapa berpikir sebaliknya?why
satu - satunya, dan bukan jawabanworkarounds
, jadi saya menambahkan penekanannya.Jawaban:
Seperti yang sudah dikatakan, Anda tidak dapat mengedit aliran input.
Solusinya cukup jelas: simpan aliran ke file dari dalam
less
dan buka file yang disimpan . Untuk melakukannya saat melihat, tekans
dan beri nama file. Kemudian keluarless
dan buka file dengan tangan, atau, masih dari dalamless
, ketik:e
dan berikan nama file yang baru saja Anda simpan.sumber
Solusi yang baik adalah menyalurkan output dari kurang ke editor Anda, mis. Setelah "echo foo | less" yang dapat Anda lakukan:
g
akan melompat ke baris pertama dari file / input,|
akan memanggil tindakan "pipa",$
adalah tanda ("akhir"), diikuti oleh perintah untuk memiparkan rentang ke (vim -
dalam hal ini, di mana "-" berarti untuk membaca input dari stdin).sumber
Artinya persis seperti yang dikatakan - Anda hanya dapat mengedit file yang ada di disk dengan cara ini (dari
less
). Jika Anda menyalurkan output dari suatu proses,STDOUT
itu masuk keSTDIN
untukless
; tidak ada file untuk diedit.sumber