"Boshlash" qoidalarini saqlab qolish uchun "g" ga "tak" nomini qanday kiritish mumkin?

Agar shunday qilsam:

alias g='git'

Barcha tugatish qoidalarini yo'qotmoqdaman (ya'ni filiallar va uzoqdan qo'mondonlar yozmoqdasiz, masalan, g ).

23
Siz uchun javobim bo'lmasa-da, men bir necha daqiqa ketishim kerak va bu ikki harfni yozmasligingiz sizni juda katta foyda keltiradimi?
qo'shib qo'ydi muallif Redbaron, manba
Ishonch hosil qiladi! Men, ehtimol, kuniga 100 marotaba "g" ni yozyapman.
qo'shib qo'ydi muallif Jay Conrod, manba
Qisqa klavishlarni qisqartirishning asosiy nuqtasi sizning qo'llaringizni miyangiz bilan boqishingizga yordam beradi.
qo'shib qo'ydi muallif JSteeleDavis, manba
Tez-tez ishlatib turadigan qisqa buyruqlarni qisqartirish, hatto kamroq taxalluslar uchun ham kunduzi yuzlab marta bosim o'tkazadi. Kabuk tariximga ko'ra, o'tgan oyda g = git 756 marta foydalanganman, ya'ni "g" va "i" tugmalarini 1512 marta bosgan holda saqladim. Bu mening git alomatlarim bilan birgalikda, oyiga o'n minglab asosiy presslarni saqlab qoladi.
qo'shib qo'ydi muallif Smith John, manba
Skriptda superuser.com/questions/436314/… juda yaxshi ishlagan, deb o'ylayman.
qo'shib qo'ydi muallif Philip Dolan, manba

8 javoblar

/etc/bash_completion.d/git dan o'z vaqtida nusxalash va o'zgartirish, ~/.bashrc qatoriga quyidagi qatorlarni qo'shing:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
    || complete -o default -o nospace -F _git g
20
qo'shib qo'ydi
Ha! Chaqmoq! Ishlar xuddi shunday bo'lishi kerak :)
qo'shib qo'ydi muallif Jay Conrod, manba
Bundan tashqari, source/usr/share/bash-completion/completions/go ni ham qo'shish kerak edi .bashrc
qo'shib qo'ydi muallif kashyapa, manba
Bu erda .bashrc kodi ishlayotganligiga ishonchim komil emas, lekin bu javob, albatta, eskirgan. /etc/bash_completion.d/git 14.04 da mavjud ko'rinmaydi. Quyida lzapning javobini ko'ring.
qo'shib qo'ydi muallif Max Wallace, manba

Eng so'nggi tugatish tugashi yuqoriga ko'tarildi va narsalarni biroz o'zgartirdi. Hozirda:

source /usr/share/bash-completion/completions/git
__git_complete g __git_main

Buni duch kelganingizda Ubuntuni so'nggi versiyalarida (masalan, 14.04, shuningdek Fedora 22+) foydalaning:

completion: function `_git' not found

tugallanganda.

14
qo'shib qo'ydi
@MaxWallace - .gitconfig (masalan, gc = chiqish) ichida ma'lum usullar uchun takomillashtirilgan parametrlarni o'rnatganingizda ular uchun aniqlik bilan aniqlik kiritish kerak emas.
qo'shib qo'ydi muallif mausalamon, manba
@MaxWallace Ha, siz haqsiz, xatoim bor;)
qo'shib qo'ydi muallif mausalamon, manba
Bu erda aynan bitta to'g'ri javob bu kabi ko'rinadi.
qo'shib qo'ydi muallif Witiko, manba
__ go_complete gc _git_checkout (yoki shunga o'xshash) dan foydalaning. To'g'ri ismni topish uchun yuqoridagi kabi /usr /.../ git ni qidiring.
qo'shib qo'ydi muallif Max Wallace, manba
@PiotrAleksanderChmielowski rahmat! c -dan farqli o'laroq, yuqori darajadagi bosh aliaslari uchun ishlaydi (masalan gc => go checkout ) < o'tish ichida kodni tekshiring va go c deb ayting. Agar noto'g'ri bo'lsam, meni to'g'ri tuzating.
qo'shib qo'ydi muallif Max Wallace, manba

~/.bashrc da:

alias g='git'
source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g

Via http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04

6
qo'shib qo'ydi

Buni amalga oshirish uchun yangilangan usul (to'liq men uchun ishlamaydi):

  1. cd - switch to your home directory
  2. wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
  3. Add source ~/git-completion.bash to your .bashrc file (if you don't have this file make one in your home folder, bash will look for it automatically)
  4. Add alias g='git'to your .bashrc file.
  5. Start a new session or source your changes with source ~/.bashrc
1
qo'shib qo'ydi
__ go_complete g _git bilan bog'langan sharhga qo'shib qo'ygan qismini atlaysiz.
qo'shib qo'ydi muallif Witiko, manba

Birinchidan, asl yakuni buyrug'ini ko'rib chiqing. Misol:

$ complete | grep git

complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git

Endi ularni boshlash skriptiga qo'shing (masalan, ~/.bashrc):

# copy the original statement, but replace the last command (git) with your alias (g)
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g

# load dynamically loaded completion functions (may not be required)
_completion_loader git

_completion_loader qatorida talab qilinishi mumkin emas. Biroq, ayrim holatlar uchun, tugatish vazifasi buyruqni kiritganingizdan so'nggina faqat dinamik ravishda yuklanadi va TAB tugmasini bosing. Ya'ni, asl buyruqdan foydalanmagan bo'lsangiz va TAB taxallusini sinab ko'rsangiz, siz "bash: completion: function not found" kabi xatoga yo'l qo'yishingiz mumkin.

1
qo'shib qo'ydi

Siz odatdagidek takrorlanadigan nomlarni aniqlab olishingiz mumkin:

alias g='git'

Keyin to'liq takomillash -ni amalga oshiring.

1
qo'shib qo'ydi

Look at here: https://gist.github.com/scue/576310b7c6b7714aad05

wget https://gist.github.com/scue/576310b7c6b7714aad05/raw/459d46761c231f5c373c1cf496920b01bb6669d2/.bash_aliases.git -O ~/.bash_aliases.git
echo "test -e ~/.bash_aliases.git && source ~/.bash_aliases.git" >> ~/.bashrc

Enjoy! (^ O ^) /

1
qo'shib qo'ydi
Kechirasiz, lekin bu butunlay boshqacha. Butun buyruqlar uchun oddiy oddiy nomlarni yaratish juda ahamiyatli emas.
qo'shib qo'ydi muallif Jay Conrod, manba
Men ularni "Oh-My-Zsh" plagini kabi ishlashga majbur qilaman: github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/…
qo'shib qo'ydi muallif scue, manba

To'liqlik uchun, men tugatish yakuni skriptining oxirida manbaga ega bo'lgan ~/.bash-completion faylini ishlatib, javobni qo'shmoqchiman:

_xfunc git __git_complete g __git_main
_xfunc git __git_complete gl _git_log
_xfunc git __git_complete gd _git_diff
_xfunc git __git_complete gb _git_branch

Keyin ~/.bashrc da faqat takma nomlarim bor. Men:

  • avoid poluting my ~/.bashrc with bash-completion stuff (keep stuff where it belongs) ✓
  • avoid sourcing the whole git-completion into my shell ☹

Hech bo'lmasa, _xfunc manbalariga o'tish tugallanmagan. Men buni to'g'ri deb bilganimdan so'ng, men ushbu javobni yangilayman (shuningdek, lunchpad-da so'radim: "https://answers.launchpad.net/bash-completion/+question/286885" rel = "nofollow" > bu erda ).

0
qo'shib qo'ydi