Примерно 5 раз в день я набираю «vi», когда имею в виду «cd», и в итоге открываю каталог в vi. Это делает меня орехами. Кажется, должен быть способ обнаружить, когда я набираю «vi + directory», и автоматически менять его на «cd + directory». Мысли?
bash
shell
alias
cd-command
Alex
источник
источник
Ответы:
Предполагая, что вы звоните
vi
с каталогом в качестве последнего аргумента:источник
rm
кrm -i
, который по умолчанию во многих дистрибутивах. Я вообще считаю, что лучший способ решить проблемы - это решить пользователя, а не обходить его.rm
отrm -i
некоторых неприятностей в прошлом, но может (и, вероятно, будет)vi
в вопросе ...${!#}
косвенно ссылается на последний аргумент иcommand
необходим только во избежание рекурсии функции в этом случае.Помимо ответа @ChrisDown, есть и другой подход: обходить каталоги
При таком подходе вы можете:
и он запустит vi для всех файлов в текущем каталоге, даже если он содержит подкаталоги, минуя эти подкаталоги
Этот просто делает vi, для любого аргумента, который не является каталогом ... Следовательно, он не научит вас использовать "vi" для "cd";)
И он не будет вызывать vi, если вы только что это сделали: vi somedirectory (т.е. неправильно набрал vi вместо cd). Но тогда он не будет записываться автоматически, поэтому вы все еще помните, что вам нужно набрать cd ^^
Я использовал «совместимый» способ изменить списки аргументов, чтобы он был переносимым на многие платформы.
источник
command something
запускает команду «что-то» (т. е. первое вхождение «что-то», найденное с помощью $ PATH) вместо любой псевдонима ИЛИ функции с именем «что-то».\something
будет только обойти псевдоним, но все равно будет функция, если она существует (и здесь, это будет означать, что функция "vi" будет вызывать себя и цикл).Одним из решений является полное прекращение использования
cd
. Положитеshopt -s autocd
в свой.bashrc
илиsetopt autocd
в свой.zshrc
. Затем, чтобы перейти в другой каталог, введите имя каталога без какой-либо команды.Не забудьте напечатать,
vi
если вы хотите редактировать файл.Если вы действительно хотите, чтобы одна команда изменила каталог или отредактировала файл, вы можете сделать это функцией:
источник
Используйте функцию псевдонима в Unix. Как только вы добавите псевдоним cd к vi, проблема будет решена.
источник
vi
без переопределения псевдонима вручную, что кажется крайне нежелательным.vim
вместо этого.vim
. Если он недоступен, используйтеvi
и ожидайте более ограниченный набор функций.