Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Bash Рег-эксп замена
Есть ли способ выполнить замену строки регулярного выражения на текущей строке в bash?
Я довольно часто оказываюсь в ситуации, когда я набрал длинную командную строку, а затем понимаю, что я хотел бы изменить слово где-то в строке.
Мой текущий подход заключается в том, чтобы закончить строку, нажать Ctrl + A (чтобы добраться до начала строки), вставить # (чтобы закомментировать строку), нажать enter, а затем использовать синтаксис ^oldword^newword ( ^oldword^newword выполняет предыдущую команду после замены старого слова новым словом).
Но должен быть лучший (более быстрый) способ достичь этого. (Мышь не представляется возможным, так как я нахожусь в ssh-сеансах большую часть времени).
Вероятно, для этого есть какая-то ключевая команда emacs, о которой я не знаю.
Edit: я пробовал использовать vi-mode. Случилось что-то странное. Хотя я и являюсь любящим пользователем vim, у меня были серьезные проблемы с использованием моего любимого bash. Все эти движения пальцев, которые были выжжены в моем подсознании, внезапно перестали работать. Я быстро вернулся к emacs-режиму и подумал, давая emacs попробовать в качестве моего любимого редактора (хотя я думаю, что то же самое может произойти снова).
Добрый день,
А как насчет использования режима vi вместо этого? Просто введите set-o vi
Затем вы можете перейти к слову, которое хотите изменить, и просто сделать cw или cW в зависимости от того, что находится в слове?
Ой, забыл добавить, что вы вводите a ESC k to o в предыдущую строку в истории команд.
Что вы обычно используете в качестве редактора?
овации, Грабить
Edit: я забыл сказать в своем первоначальном ответе, что вам нужно думать о командной строке vi в bash, используя команды, которые вы вводите, когда вы находитесь в режиме "ex" в vi, т. е. после того, как вы войдете в толстую кишку.
Хуже всего то, что вам нужно перемещаться по истории ваших команд, используя древние команды vi h (слева) и l (справа). Однако вы можете использовать w (или W), чтобы отскакивать от слов.
Однако, как только вы привыкнете к этому, у вас будут доступны все виды команд, например, ввод ESC / my_command будет смотреть назад через вашу историю r, самую последнюю первую, чтобы найти первое появление командной строки, содержащей текст my_command. После того, как он нашел это, вы можете использовать n для поиска следующего события и т. д. И N, чтобы изменить направление поиска.
Я бы пошел почитать справочную страницу для bash,чтобы посмотреть, что доступно в режиме vi. Как только вы преодолеете тот факт, что стрелка вверх и Стрелка вниз заменены на ESC k, а затем j, вы увидите, что режим vi предлагает больше, чем режим emacs для редактирования командной строки в bash.
IMHO натчерли! (-:
Emacs? Восемьдесят мегов и постоянно меняемся местами!
овации, Грабить
в режиме ksh, в режиме vi, если вы нажмете 'v', находясь в командном режиме, он вызовет полный сеанс vi на содержимое текущей командной строки. Затем вы можете отредактировать его, используя полный набор команд vi (глобальный поиск и замена в вашем случае). Когда команду от vi, команда редактировать выполняется. Я уверен, что нечто подобное существует и для bash. Поскольку bash имеет тенденцию расширять свои предшественники, вероятно, есть что-то подобное.
К сожалению, нет, на самом деле нет лучшего способа. Если вы просто устали делать нажатия клавиш, вы можете использовать macros, чтобы обрезать их. Добавьте следующее к вашему ~/.inputrc :
"\C-x6": "\C-a#\C-m^"
"\C-x7": "\C-m\C-P\C-a\C-d\C-m"
Теперь, в новом экземпляре bash (или после перезагрузки .inputrc в текущем shell, нажав C-x C-r), вы можете сделать следующее:
- Введите фиктивную команду (например,
ls abcxyz). - Нажмите Ctrl-x, затем 6. Макрос вставляет символ
#в начало строки, выполняет закомментированную строку и вводит первый символ^. - Введите свое исправление (например,
xyz^def). - Нажмите Ctrl-x, затем 7. Макрос завершает подстановку, затем переходит к предыдущей (комментируемой) строке, удаляет символ комментария и выполняет его снова.
Это не совсем элегантно, но я думаю, что это лучшее, что вы получите с readline.