Когда вы удаляете байты из файла, вы должны перезаписать его. Это будет время O(L), где L - длина файла. Вы никогда не достигнете O(n) в нормальной файловой системе.
Вы можете достичь < O(n)
, когда n делится на размер блока файловой системы, так как эта операция просто удалит некоторые зарезервированные коды из записи каталога.
(В идеальном случае, когда программа именно так и делает!)
The question is this: can I programmatically cause zsh to delete the shell arg that i'm currently on? And then paste it back in? Can I bind a key to let me hop based on actual args instead of just hopping words?
Да, можно. Просто используйте мой плагин Zsh Edit .Он включает в себя сочетания клавиш для пропуска и вырезания целых слов-оболочек:
Команда | emacs раскладка клавиатуры | main раскладка клавиатуры | main раскладка клавиатуры |
---|---|---|---|
Обратное подслово | АльтВ | Ctrl← | Альт← |
Обратное слово оболочки | CtrlAltB | Ctrl↑ | Альт↑ |
Подслово вперед | АльтF | Управл.→ | Альт→ |
Слово оболочки вперед | CtrlAltF | Ctrl↓ | Альт↓ |
Подслово уничтожения в обратном направлении | AltBackspace | CtrlBackspace | AltBackspace |
Слово оболочки обратного уничтожения | Управл.З | ShiftCtrlBackspace | CtrlAltBackspace |
Символ удаления вперед | Удалить | ||
Подслово уничтожения вперед | АльтД | Контр.Удалить | АльтУдалить |
Слово оболочки прямого уничтожения | CtrlAltD | ShiftCtrlУдалить | CtrlAltУдалить |
Начало строки | Управл.А | Главная | |
Конец строки | CtrlE | Конец | |
Началобуфер | Альт< | CtrlГлавная | PageUp |
Конец буфера | Альт> | Контр.Конец | PageDn |
Обратная линия поражения | Управл.У | СменаДом | Сдвиг← |
Передняя линия поражения | CtrlК | СдвигКонец | Сдвиг→ |