Intereting Posts
mysql workbench для linux deepin 15.3 Perl и Python неправильно интерпретируются через shebang на Linux Как выполнить udhcpc как не root Как добавить запись CAA на Debian используя Set uid для запуска корневой команды от пользователя без полномочий root wpa_supplicant дает ошибки rfkill при подключении? Как изменить интервал обновления времени доступа к релятиму с 24 часов? Изменение домашнего каталога путем редактирования / etc / passwd использовать документацию R на локальном веб-сервере Wget – получение рекурсивных URL-адресов из списка URL-адресов Manjaro: изменить текстовый редактор по умолчанию на Sublime Text 3 Как изменить язык для команды man? Модификация и повторная компиляция драйверов Linux Выполнение скрипта на удаленном сервере, содержащемся на стороне клиента можем ли мы просмотреть содержимое файлов журнала поверх, отправленных с удаленного компьютера на локальный

Автоматически обнаруживать, когда я набрал «vi», но имел в виду «cd»?

Название говорит все. Примерно 5 раз в день, я набираю «vi», когда я имел в виду «cd», и заканчиваю открытие каталога в vi. Это делает меня NUTS. Кажется, должен быть способ обнаружить, когда я набираю «каталог vi +» и автоматически меняю его на «каталог cd +». Мысли?

С предположением, что вы вызываете vi с каталогом в качестве последнего аргумента:

 vi() { if [[ -d ${!#} ]]; then cd "$@" else command vi "$@" fi } 

Помимо ответа @ChrisDown, вот еще один подход: обходные каталоги

При таком подходе вы можете:

 vi ./* 

и он запустит vi во всех файлах в текущем каталоге, даже если он содержит поддиры, минуя эти поддиры

 vi() { for arg do [ -d "$arg" ] || set -- "$@" "$arg" shift done [ "$#" -gt 0 ] && command vi "$@" } 

Это просто vi, по любому аргументу, который не является каталогами … Следовательно, он не научит вас использовать «vi» для «cd»;)

И он не будет называть vi, если вы только что сделали: vi somedirectory (т. Е. С ошибкой vi вместо cd). Но он автоматически не будет записываться автоматически, поэтому вы все равно помните, что вам нужно ввести cd ^^

Я использовал «совместимый» способ изменения списков аргументов, так что он переносится на многие платформы.

Одним из решений является прекращение использования cd целом. Поместите shopt -s autocd в ваш .bashrc или setopt autocd в вашем .zshrc . Затем, чтобы перейти в другой каталог, введите имя каталога без какой-либо команды.

Не забудьте ввести vi если вы хотите отредактировать файл.

Если вы действительно хотите, чтобы одна команда либо изменялась в каталог, либо редактировала файл, вы можете сделать его функцией:

 vi () { if [ $# -eq 1 ] && [ -d "$1" ]; then cd -- "$1" else command vi "$@" fi } 

Используйте функцию псевдонима в Unix. После того, как вы сгенерируете cd to vi, проблема будет решена.