Aşağıdakiler dışında normal /write fonksiyonu kullanılmaya devam eder
çalışacağını tahmin ediyorum (.
/write -dl10+ dosya.txt # 10. satırdan sonrakileri siler
/write -dl10- dosya.txt # 10. satırdan öncekileri siler
/write -dl10-50 dosya.txt # 10-50 arası satırları siler
/write -dl10+50 dosya.txt # 10+50 satırları dışındakileri siler
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias write {
if ($regex($1, /^-dl(\d+\+|\d+-\d+|\d+-|\d+\+\d+)$/)) {
var %a~ = $+(@_,$md5($2)) | .window -hn %a~ | .loadbuf -r %a~ $2 | var %b~ = $line(%a~, 0)
if ($regex($1, /^-dl(\d+)\+$/)) {
var %c~~ = $calc($regml(1) + 1)
if (%c~~ <= %b~) { filter -c %a~ %a~ %c~~ - %b~ | filter -x %a~ %a~ * }
}
elseif ($regex($1, /^-dl(\d+)-(\d+)$/)) {
var %c~~ = $regml(1), %d~~ = $regml(2)
filter -c %a~ %a~ %c~~ - %d~~ | filter -x %a~ %a~ *
}
elseif ($regex($1, /^-dl(\d+)-$/)) {
var %d~~ = $calc($regml(1) - 1)
if (%d~~ >= 1) { filter -c %a~ %a~ 1 - %d~~ | filter -x %a~ %a~ * }
}
elseif ($regex($1, /^-dl(\d+)\+(\d+)$/)) {
var %a~ = $regml(1), %b~ = $regml(2), %c~~ = $calc(%a~ + %b~ - 1)
if (%a~ <= %b~ && %c~~ <= %b~) {
filter -c %a~ %a~ %a~ - %c~~ | filter -x %a~ %a~ *
}
}
.savebuf %a~ $2 | .window -c %a~
}
else {
!write $1-
}
}