Giter Club home page Giter Club logo

Comments (6)

sagarkar10 avatar sagarkar10 commented on June 16, 2024 1

Yes, that's exactly what I needed! Feeling stupid, didn't figure out myself!
Thanks a lot!

from zsh-abbr.

sagarkar10 avatar sagarkar10 commented on June 16, 2024 1

Also, a 2nd thought, we should auto sync alias and abbr in-case people are using both and transitioning!

from zsh-abbr.

olets avatar olets commented on June 16, 2024

Thanks for the idea!

alias-tips has an excludes array (https://github.com/djui/alias-tips#exclude-some-aliases). If for every abbreviation you have an alias with the same short form (for example, alias x="my command" and abbr x="my command") then adding this snippet to your .zshrc should automatically exclude all abbreviations when the shell initializes:

export ZSH_PLUGINS_ALIAS_TIPS_EXCLUDES="${(f)$(abbr l)}"

(that is, a single string from abbr l's multi-line output). If you're already excluding things,

export ZSH_PLUGINS_ALIAS_TIPS_EXCLUDES="myalias ${(f)$(abbr l)}"

After adding a new abbreviation, open a new terminal and/or refresh open terminals (source ~/.zshrc or, preferably, exec zsh) to exclude the newly added abbreviation.

Does that meet your need?

from zsh-abbr.

olets avatar olets commented on June 16, 2024

I've chosen to not support auto syncing because it would require letting abbr write and possibly first parse .zshrc. Have you tried abbr export-aliases and abbr import-aliases? See https://github.com/olets/zsh-abbr#commands for documentation.

You could do something like

  1. run abbr import-aliases once

  2. add to the end of your .zshrc

    abbr export-aliases > $HOME/aliases-from-abbr
    source $HOME/aliases-from-abbr

Putting it at the very end of your .zshrc will keep the aliases from breaking other parts of your shell initialization.

//

Another approach: run

abbr import-aliases

once and then delete as many aliases as possible. That's my personal recommendation. It would probably even obviate your alias-tips problem. If you decide to switch back to aliases, run abbr export-aliases once, and copy and paste that into your shell config.

from zsh-abbr.

sagarkar10 avatar sagarkar10 commented on June 16, 2024

I understand both the workarounds you proposed!
But I wanted to suggest something different
Assuming all the aliases are present in .zsh-aliases which is sourced in .zshrc

Someone might want to use both abbr and alias interchangeably.

What I suggest is

  • we create a hook that runs abbr export-aliases to .zsh-aliases file at session end (or on-demand)
  • Another hook that clears (abbr clear-all) abbr and then add abbr import-aliases

Let me know if that makes sense, I can add a PR, or we can discuss in more details about the implementation!

from zsh-abbr.

olets avatar olets commented on June 16, 2024

Interesting idea! For now, it doesn't feel to me like syncing abbreviations and aliases is something zsh-abbr should take on — it's sort of a meta responsibility. But let's keep thinking it through.

//

abbr clear-all

Now and then I consider making a "delete all abbreviations" function… But I'm afraid if it existed I'd run it by mistake! The easiest way to roll your own will be

echo > $ABBR_USER_ABBREVIATIONS_FILE
abbr load

at session end

I'm not aware of a way to do this, but sounds cool. Are you?

//

What if you invert my previous idea, letting aliases be the source of truth

# .zshrc

source .zsh-aliases
# load zsh-abbr and then
abbr import-aliases --quiet

and to add an alias and an abbreviation use

% echo alias x=y > .zsh-aliases && exec zsh

(Could make a function for that, and abbralias x=y.) Or am I still not seeing your use case?

from zsh-abbr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.