284 KiB
data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true"
<head>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-b4bd0459f984.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-46e30a0a488d.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ef14fd9f242b.css" />
<script type="application/json" id="client-env">{"locale":"en","featureFlags":["alternate_user_config_repo","api_insights_show_missing_data_banner","appearance_settings","code_scanning_ref_selector","codespaces_prebuild_region_target_update","contact_requests_implicit_opt_in","contentful_lp_flex_features","contentful_lp_footnotes","contentful_lp_form_phone_e164","copilot_chat_attach_multiple_images","copilot_chat_autocomplete","copilot_chat_custom_instructions","copilot_chat_repo_custom_instructions_preview","copilot_chat_vision_in_claude","copilot_chat_wholearea_dd","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_free_to_paid_telem","copilot_ftp_settings_upgrade","copilot_ftp_upgrade_to_pro_from_models","copilot_ftp_your_copilot_settings","copilot_immersive_draft_issue_template_required","copilot_immersive_issue_preview","copilot_new_conversation_starters","copilot_new_immersive_references_ui","copilot_no_floating_button","copilot_read_shared_conversation","copilot_showcase_icebreakers","copilot_task_oriented_assistive_prompts","copilot_topics_as_references","copilot_workbench_iterate_panel","copilot_workbench_preview_analytics","copilot_workbench_refresh_on_wsod","copilot_workbench_user_limits","custom_copilots_capi_mode","direct_to_salesforce","dotcom_chat_client_side_skills","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","insert_before_patch","issues_react_blur_item_picker_on_close","issues_react_bots_timeline_pagination","issues_react_create_milestone","issues_react_prohibit_title_fallback","issues_react_remove_placeholders","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","memex_mwl_filter_field_delimiter","nonreporting_relay_graphql_status_codes","primer_primitives_experimental","primer_react_css_modules_ga","primer_react_select_panel_with_modern_action_list","remove_child_patch","sample_network_conn_type","sanitize_nested_mathjax_macros","site_homepage_contentful","site_msbuild_hide_integrations","site_msbuild_launch","site_msbuild_webgl_hero","spark_auth_token_endpoint","spark_commit_on_default_branch","swp_enterprise_contact_form","use_copilot_avatar","use_paginated_repo_picker_cost_center_form"]}</script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/high-contrast-cookie-a58297b2ebf8.js"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-d8e05251d7d5.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-a8c266e5f126.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1d3d52-babac9434833.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-7cc3ec44644a.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-89128d48c6ff.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-c44edfed7f0d.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-cdf2757bd188.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-5913bc24f35d.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-e50fb7a5fe8c.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-c1e2fb329866.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-d8c643-251bc3964eb6.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-6a8c7d9a08fe.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-cadbad-fad3eaf3c7ec.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-5ceffe5aca10.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-2a91e47d59c9.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-34c4b68b1dd3.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-b93a87060d31.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_morphdom_dist_morphdom-esm_js-300e8e4e0414.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_fzy_js_index_js-node_modules_github_paste-markdown_dist_index_js-63a26702fa42.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-595819d3686f.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-1bcf38e06f01.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-1a149db8dc99.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-c1aa61-91618cb63471.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-a5daa16ae903.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-f953ddf42948.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-e45aabc67d13.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-a7da4270c5f4.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-567e0f340e27.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-ff35a0621c79.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-ea8eaa-eefe25567449.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-eadae94940d6.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-558c1f223d1d.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-8c39716e9d81.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-957709c85fcc.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-core-9ee8c3c69121.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-8705026b409a.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-9fd6ca6872cc.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-b1c483-b5947865157f.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_catalyst_lib_index_js-node_modules_primer_live-region-element_dis-b2aea6-bfc50dd77594.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-7457ebdd1a1f.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__Stack_js-node_modules_lodash-es__Uint8Array_js-node_modules_l-4faaa6-16c4e2c524de.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es_isEqual_js-a0841ced23fc.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_react-virtual_dist_esm_index_js-807aab04afeb.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_focus-visible_dist_focus-visible_js-node_modules_github_hydro-analytics--e21ffd-0b758af67e69.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_fzy_js_index_js-node_modules_react-reverse-portal_dist_web_index_js-node-835def-721f0587143e.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_document-metadata_document-metadata_ts-ui_packages_history_history_ts-ui_packages-417c81-00e1a3522739.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-9cbcdd9beb09.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_fetch-headers_fetch-headers_ts-ui_packages_ref-selector_RefSelector_tsx-2e1c637f06cc.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-0f6a14-529dd8abada9.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_diffs_diff-parts_ts-1581bb14cd5c.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_app-uuid_app-uuid_ts-ui_packages_repos-file-tree-view_repos-file-tree-view_ts-ui_-e7c631-c2e3b90efda5.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-6097ef-bc48b3a581ca.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_blob-anchor_ts-ui_packages_code-nav_code-nav_ts-ui_packages_filter--8253c1-5fde020dbad1.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-code-view-26ab3735624d.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-f6210e67e2e9.js" defer="defer"></script>
<meta name="hovercard-subject-tag" content="repository:84618431" data-turbo-transient>
<meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">
<meta name="user-login" content="">
<meta name="viewport" content="width=device-width">
<meta name="description" content="Simple command-line snippet manager. Contribute to knqyf263/pet development by creating an account on GitHub.">
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
<meta property="fb:app_id" content="1401488693436528">
<meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/knqyf263/pet/blob/main/README.md" />
<meta name="twitter:image" content="https://opengraph.githubassets.com/78b7def9751224d57139a700341af44e1a93f9a0a2cdce9af30e905a9fa03c83/knqyf263/pet" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="pet/README.md at main · knqyf263/pet" /><meta name="twitter:description" content="Simple command-line snippet manager. Contribute to knqyf263/pet development by creating an account on GitHub." />
<meta name="hostname" content="github.com">
<meta name="expected-hostname" content="github.com">
<meta name="turbo-cache-control" content="no-cache" data-turbo-transient>
<meta data-hydrostats="publish">
<meta name="turbo-body-classes" content="logged-out env-production page-responsive">
</head>
<div class="position-relative header-wrapper js-header-wrapper ">
<a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>
<span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
<span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-eb77c4447210.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-6bb6aa2945d5.js" defer="defer"></script>
<react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" data-react-profiling="false"
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-99b04cc350b5.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-eed3aa0554dd.js" defer="defer"></script>
Navigation Menu
Toggle navigation <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav"
href="/"
aria-label="Homepage"
data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}">
<svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github">
<path d="M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z"></path>
<div class="d-flex flex-1 flex-order-2 text-right d-lg-none gap-2 flex-justify-end">
<a
href="/login?return_to=https%3A%2F%2Fgithub.com%2Fknqyf263%2Fpet%2Fblob%2Fmain%2FREADME.md"
class="HeaderMenu-link HeaderMenu-button d-inline-flex f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav"
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/knqyf263/pet/blob/main/README.md","user_id":null}}" data-hydro-click-hmac="2e95fab77a1c1eb852a7e61aebb8631b8caa855baac42dd101252c82c4cbb430"
data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}"
>
Sign in
</a>
<div class="AppHeader-appearanceSettings">
<react-partial-anchor>
<button data-target="react-partial-anchor.anchor" id="icon-button-31df383d-c949-457e-8146-db7be54f8311" aria-labelledby="tooltip-9bb23eed-8a22-4510-a985-b56cf293678f" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
<path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path>
Appearance settings
<template data-target="react-partial-anchor.template">
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_document-metadata_document-metadata_ts-ui_packages_promise-with-resolvers-polyfil-40d47c-d5b8454ad019.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/appearance-settings-ca5eb47b4f39.js" defer="defer"></script>
<react-partial partial-name="appearance-settings" data-ssr="false" data-attempted-ssr="false" data-react-profiling="false"
<script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
</template>
</react-partial-anchor>
</div>
</div>
<div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0">
<div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0">
<nav class="HeaderMenu-nav" aria-label="Global">
<ul class="d-lg-flex list-style-none">
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
Product
<svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
<path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path>
<div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide">
<div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0">
<ul class="list-style-none f5" >
<li>
<li>
<li>
<li>
<li>
</ul>
</div>
</div>
<div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0">
<ul class="list-style-none f5" >
<li>
<li>
<li>
<li>
</ul>
</div>
</div>
<div class="HeaderMenu-column px-lg-4">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span>
<ul class="list-style-none f5" aria-labelledby="product-explore-heading">
<li>
Why GitHub
<li>
All features
<li>
Documentation
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
<li>
GitHub Skills
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
<li>
Blog
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
</ul>
</div>
</div>
</div>
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
Solutions
<svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
<path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path>
<div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide">
<div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0">
<span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span>
<ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading">
<li>
Enterprises
<li>
Small and medium teams
<li>
Startups
<li>
Nonprofits
</ul>
</div>
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span>
<ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading">
<li>
DevSecOps
<li>
DevOps
<li>
CI/CD
<li>
View all use cases
</ul>
</div>
</div>
<div class="HeaderMenu-column px-lg-4">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span>
<ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading">
<li>
Healthcare
<li>
Financial services
<li>
Manufacturing
<li>
Government
<li>
View all industries
</ul>
</div>
</div>
<div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold">
<a href="/solutions">
View all solutions
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon">
<path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path>
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
Resources
<svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
<path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path>
<div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide">
<div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span>
<ul class="list-style-none f5" aria-labelledby="resources-topics-heading">
<li>
AI
<li>
DevOps
<li>
Security
<li>
Software Development
<li>
View all
</ul>
</div>
</div>
<div class="HeaderMenu-column px-lg-4">
<div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span>
<ul class="list-style-none f5" aria-labelledby="resources-explore-heading">
<li>
Learning Pathways
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
<li>
Events & Webinars
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
<li>
Ebooks & Whitepapers
<li>
Customer Stories
<li>
Partners
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
<path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path>
<li>
Executive Insights
</ul>
</div>
</div>
</div>
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
Open Source
<svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
<path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path>
<div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4">
<div class="HeaderMenu-column">
<div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3">
<ul class="list-style-none f5" >
<li>
<div>
<div class="color-fg-default h4">
GitHub Sponsors
</div>
Fund open source developers
</div>
</ul>
</div>
<div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3">
<ul class="list-style-none f5" >
<li>
<div>
<div class="color-fg-default h4">
The ReadME Project
</div>
GitHub community articles
</div>
</ul>
</div>
<div class="border-bottom pb-3 pb-lg-0 border-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span>
<ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading">
<li>
Topics
<li>
Trending
<li>
Collections
</ul>
</div>
</div>
</div>
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
Enterprise
<svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
<path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path>
<div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4">
<div class="HeaderMenu-column">
<div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3">
<ul class="list-style-none f5" >
<li>
</ul>
</div>
<div class="border-bottom pb-3 pb-lg-0 border-bottom-0">
<span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span>
<ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading">
<li>
<li>
<li>
</ul>
</div>
</div>
</div>
<li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
<a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a>
</ul>
</nav>
<div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3">
<input type="hidden" name="type" class="js-site-search-type-field">
Search code, repositories, users, issues, pull requests...
<div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container"
style="border-radius: 12px;"
data-target="qbsearch-input.queryBuilderContainer"
hidden
>
<!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get">
</div>
<template id="search-icon">
<div class="position-relative">
<ul
role="listbox"
class="ActionListWrap QueryBuilder-ListWrap"
aria-label="Suggestions"
data-action="
combobox-commit:query-builder#comboboxCommit
mousedown:query-builder#resultsMousedown
"
data-target="query-builder.resultsList"
data-persist-list=false
id="query-builder-test-results"
></ul>
</div>
<div class="FormControl-inlineValidation" id="validation-ade04468-97e0-4068-aa2b-f075a4d4c4f9" hidden="hidden">
<span class="FormControl-inlineValidation--visual">
<svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill">
<path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path>
</div>
Provide feedback
</div>
<div class="Overlay-actionWrap">
<button data-close-dialog-id="feedback-dialog" aria-label="Close" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
We read every piece of feedback, and take your input very seriously.
<custom-scopes data-target="qbsearch-input.customScopesManager">
Saved searches
Use saved searches to filter your results more quickly
<div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="4GlD9J1GoGZ56wmu7zw4AlfVMglqi/6d0jW86Q2xgXC+hVq0vKoHfIcdhT5oj3KkOdeuFgoKqQD85YFMiYkx9g==" />
<div data-target="custom-scopes.customScopesModalDialogFlash"></div>
<input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField">
<div class="form-group">
<label for="custom_scope_name">Name</label>
<auto-check src="/search/custom_scopes/check_name" required>
<input
type="text"
name="custom_scope_name"
id="custom_scope_name"
data-target="custom-scopes.customScopesNameField"
class="form-control"
autocomplete="off"
placeholder="github-ruby"
required
maxlength="50">
<input type="hidden" data-csrf="true" value="RTUuAiAoetcheDp+ljmQZOQQf+MPSqL5ksGvPPC1Zf1ZSnT9lynmCXCo6DqSHZ8A6lLFJ9aO/Ynj7iGABu2Ywg==" />
</auto-check>
</div>
<div class="form-group">
<label for="custom_scope_query">Query</label>
<input
type="text"
name="custom_scope_query"
id="custom_scope_query"
data-target="custom-scopes.customScopesQueryField"
class="form-control"
autocomplete="off"
placeholder="(repo:mona/a OR repo:mona/b) AND lang:python"
required
maxlength="500">
</div>
<p class="text-small color-fg-muted">
To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>.
</p>
<div data-target="custom-scopes.manageCustomScopesForm">
<div data-target="custom-scopes.list"></div>
</div>
<div class="position-relative HeaderMenu-link-wrap d-lg-inline-block">
<a
href="/login?return_to=https%3A%2F%2Fgithub.com%2Fknqyf263%2Fpet%2Fblob%2Fmain%2FREADME.md"
class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1"
style="margin-left: 12px;"
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/knqyf263/pet/blob/main/README.md","user_id":null}}" data-hydro-click-hmac="2e95fab77a1c1eb852a7e61aebb8631b8caa855baac42dd101252c82c4cbb430"
data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}"
>
Sign in
</a>
</div>
<a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&source=header-repo&source_repo=knqyf263%2Fpet"
class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1"
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/knqyf263/pet/blob/main/README.md","user_id":null}}" data-hydro-click-hmac="2e95fab77a1c1eb852a7e61aebb8631b8caa855baac42dd101252c82c4cbb430"
data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out"}"
>
Sign up
</a>
<div class="AppHeader-appearanceSettings">
<react-partial-anchor>
<button data-target="react-partial-anchor.anchor" id="icon-button-c10deb78-159c-429e-9e6b-7e73dc667861" aria-labelledby="tooltip-a922998a-3a4e-4a59-8a8d-c9b786e68cc5" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
<path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path>
Appearance settings
<template data-target="react-partial-anchor.template">
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.c212c596cc6bbefb1798.module.css" />
<react-partial partial-name="appearance-settings" data-ssr="false" data-attempted-ssr="false" data-react-profiling="false"
<script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
</template>
</react-partial-anchor>
<button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Resetting focus</button>
</div>
</div>
</div>
<div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.
<button id="icon-button-dcf1a23f-acb5-49cc-9e63-86e8b1deb2ad" aria-labelledby="tooltip-7f7ea992-d896-40b7-9db1-8264bb28e7be" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
Dismiss alert
<div id="js-flash-container" class="flash-container" data-turbo-replace>
<div>{{ message }}</div>
</div>
<div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;">
<div class="flex-auto min-width-0 width-fit">
<span class="author flex-self-stretch" itemprop="author">
<a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/knqyf263/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/knqyf263">
knqyf263
/ pet
<span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
</div>
<div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;">
<ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
</div>
</div>
<div id="responsive-meta-container" data-turbo-replace>
<nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5">
-
Code<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> -
Issues 18<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> -
Pull requests 4<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> -
Discussions<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> -
Actions<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> -
Projects 1<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> -
Security<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> -
Insights<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
<div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list>
<react-app app-name="react-code-view" initial-path="/knqyf263/pet/blob/main/README.md" style="display: block; min-height: calc(100vh - 64px);" data-attempted-ssr="false" data-ssr="false" data-lazy="false" data-alternate="false" data-data-router-enabled="false" data-react-profiling="false"
<script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"cmd","path":"cmd","contentType":"directory"},{"name":"config","path":"config","contentType":"directory"},{"name":"dialog","path":"dialog","contentType":"directory"},{"name":"doc","path":"doc","contentType":"directory"},{"name":"misc","path":"misc","contentType":"directory"},{"name":"path","path":"path","contentType":"directory"},{"name":"scripts","path":"scripts","contentType":"directory"},{"name":"snippet","path":"snippet","contentType":"directory"},{"name":"sync","path":"sync","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".goreleaser.yml","path":".goreleaser.yml","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"SECURITY.md","path":"SECURITY.md","contentType":"file"},{"name":"go.mod","path":"go.mod","contentType":"file"},{"name":"go.sum","path":"go.sum","contentType":"file"},{"name":"main.go","path":"main.go","contentType":"file"}],"totalCount":19}},"fileTreeProcessingTime":3.6077980000000003,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":84618431,"defaultBranch":"main","name":"pet","ownerLogin":"knqyf263","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-03-11T02:42:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2253692?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"main","listCacheKey":"v0:1733647194.0","canEdit":false,"refType":"branch","currentOid":"fd4fe4272d57c5d2063140571a7e7fefe6afe5e4"},"path":"README.md","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/knqyf263/pet/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"README.md","displayUrl":"https://github.com/knqyf263/pet/blob/main/README.md?raw=true","headerInfo":{"blobSize":"17 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"eb70350","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fknqyf263%2Fpet%2Fblob%2Fmain%2FREADME.md","isCSV":false,"isRichtext":true,"toc":[{"level":1,"text":"Pet - CLI Snippet Manager","anchor":"pet---cli-snippet-manager","htmlText":"Pet - CLI Snippet Manager"},{"level":1,"text":"Motivation","anchor":"motivation","htmlText":"Motivation"},{"level":1,"text":"TOC","anchor":"toc","htmlText":"TOC"},{"level":1,"text":"Main features","anchor":"main-features","htmlText":"Main features"},{"level":1,"text":"Creating a snippet","anchor":"creating-a-snippet","htmlText":"Creating a snippet"},{"level":1,"text":"Parameters","anchor":"parameters","htmlText":"Parameters"},{"level":1,"text":"Examples","anchor":"examples","htmlText":"Examples"},{"level":2,"text":"Register the previous command easily","anchor":"register-the-previous-command-easily","htmlText":"Register the previous command easily"},{"level":3,"text":"bash prev function","anchor":"bash-prev-function","htmlText":"bash prev function"},{"level":3,"text":"zsh prev function","anchor":"zsh-prev-function","htmlText":"zsh prev function"},{"level":3,"text":"fish","anchor":"fish","htmlText":"fish"},{"level":2,"text":"Select snippets at the current line (like C-r) (RECOMMENDED)","anchor":"select-snippets-at-the-current-line-like-c-r-recommended","htmlText":"Select snippets at the current line (like C-r) (RECOMMENDED)"},{"level":3,"text":"bash","anchor":"bash","htmlText":"bash"},{"level":3,"text":"zsh","anchor":"zsh","htmlText":"zsh"},{"level":3,"text":"fish","anchor":"fish-1","htmlText":"fish"},{"level":2,"text":"Copy snippets to clipboard","anchor":"copy-snippets-to-clipboard","htmlText":"Copy snippets to clipboard"},{"level":2,"text":"Allow to register from history when using fzf","anchor":"allow-to-register-from-history-when-using-fzf","htmlText":"Allow to register from history when using fzf"},{"level":1,"text":"Features","anchor":"features","htmlText":"Features"},{"level":2,"text":"Edit snippets","anchor":"edit-snippets","htmlText":"Edit snippets"},{"level":2,"text":"Sync snippets","anchor":"sync-snippets","htmlText":"Sync snippets"},{"level":1,"text":"Usage","anchor":"usage","htmlText":"Usage"},{"level":1,"text":"Snippet","anchor":"snippet","htmlText":"Snippet"},{"level":1,"text":"Configuration","anchor":"configuration","htmlText":"Configuration"},{"level":2,"text":"Multi directory and multi file setup","anchor":"multi-directory-and-multi-file-setup","htmlText":"Multi directory and multi file setup"},{"level":2,"text":"Selector option","anchor":"selector-option","htmlText":"Selector option"},{"level":2,"text":"Tag","anchor":"tag","htmlText":"Tag"},{"level":2,"text":"Sync","anchor":"sync","htmlText":"Sync"},{"level":3,"text":"Gist","anchor":"gist","htmlText":"Gist"},{"level":3,"text":"GHE Gist","anchor":"ghe-gist","htmlText":"GHE Gist"},{"level":3,"text":"GitLab Snippets","anchor":"gitlab-snippets","htmlText":"GitLab Snippets"},{"level":2,"text":"Auto Sync","anchor":"auto-sync","htmlText":"Auto Sync"},{"level":1,"text":"Installation","anchor":"installation","htmlText":"Installation"},{"level":2,"text":"Binary","anchor":"binary","htmlText":"Binary"},{"level":2,"text":"macOS / Homebrew","anchor":"macos--homebrew","htmlText":"macOS / Homebrew"},{"level":2,"text":"Fedora, RedHat, CentOS","anchor":"fedora-redhat-centos","htmlText":"Fedora, RedHat, CentOS"},{"level":2,"text":"Debian, Ubuntu","anchor":"debian-ubuntu","htmlText":"Debian, Ubuntu"},{"level":2,"text":"Archlinux","anchor":"archlinux","htmlText":"Archlinux"},{"level":2,"text":"Build","anchor":"build","htmlText":"Build"},{"level":1,"text":"Migration","anchor":"migration","htmlText":"Migration"},{"level":2,"text":"From Keep","anchor":"from-keep","htmlText":"From Keep"},{"level":1,"text":"Contribute","anchor":"contribute","htmlText":"Contribute"},{"level":1,"text":"License","anchor":"license","htmlText":"License"},{"level":1,"text":"Author","anchor":"author","htmlText":"Author"}],"lineInfo":{"truncatedLoc":"573","truncatedSloc":"440"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/knqyf263/pet/blob/main/README.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/knqyf263/pet/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/knqyf263/pet/raw/refs/heads/main/README.md","renderImageOrRaw":false,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePet - CLI Snippet Manager\u003c/h1\u003e\u003ca id=\"user-content-pet---cli-snippet-manager\" class=\"anchor\" aria-label=\"Permalink: Pet - CLI Snippet Manager\" href=\"#pet---cli-snippet-manager\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://github.com/knqyf263/pet/releases/latest\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/b4ca21703882a18eed54a4cc1131db152befcbbb9350c8a6dc7c7818091ef575/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6b6e7179663236332f7065742e737667\" alt=\"GitHub release\" data-canonical-src=\"https://img.shields.io/github/release/knqyf263/pet.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/knqyf263/pet/blob/master/LICENSE\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/95c10fa6088c05deb9bdfe215245185f6f8262c17e68b55188cfcf7c3ce03c52/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e7376673f7374796c653d666c6174\" alt=\"MIT License\" data-canonical-src=\"http://img.shields.io/badge/license-MIT-blue.svg?style=flat\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv align=\"center\" dir=\"auto\"\u003e\n\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/logo.png\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/logo.png\" width=\"350\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMotivation\u003c/h1\u003e\u003ca id=\"user-content-motivation\" class=\"anchor\" aria-label=\"Permalink: Motivation\" href=\"#motivation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epet\u003c/code\u003e is a simple command-line snippet manager (inspired by \u003ca href=\"https://github.com/mattn/memo\"\u003ememo\u003c/a\u003e).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eI have a hard time remembering complex command or ones that I rarely use. Moreover, it is difficult to find them in shell history.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIt's time to let go of the expectation of remembering every command, and focus on productivity and finding the right commands as fast as possible. It's fun when you're 2 years in and work with 2 tools, but less so when you're a decade in and work across backend/frontend/infrastructure with tons of tools. You most probably relate to this if you're a developer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epet\u003c/code\u003e is a simple tool that allows you to save, tag, search, and execute command-line snippets easily! It's now nearly 8 years old and is used by many developers around the world.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epet\u003c/code\u003e is written in Go, and therefore you can just grab the binary releases and drop it in your $PATH.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet01.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet01.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou can use variables (\u003ccode\u003e\u0026lt;param\u0026gt;\u003c/code\u003e or \u003ccode\u003e\u0026lt;param=default_value\u0026gt;\u003c/code\u003e ) in snippets.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet08.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet08.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTOC\u003c/h1\u003e\u003ca id=\"user-content-toc\" class=\"anchor\" aria-label=\"Permalink: TOC\" href=\"#toc\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#main-features\"\u003eMain features\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#parameters\"\u003eParameters\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#examples\"\u003eExamples\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#register-the-previous-command-easily\"\u003eRegister the previous command easily\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bash-prev-function\"\u003ebash\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#zsh-prev-function\"\u003ezsh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#fish\"\u003efish\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#select-snippets-at-the-current-line-like-c-r-recommended\"\u003eSelect snippets at the current line (like C-r) (RECOMMENDED)\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bash\"\u003ebash\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#zsh\"\u003ezsh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#fish-1\"\u003efish\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#copy-snippets-to-clipboard\"\u003eCopy snippets to clipboard\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#edit-snippets\"\u003eEdit snippets\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sync-snippets\"\u003eSync snippets\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#hands-on-tutorial\"\u003eHands-on Tutorial\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#snippet\"\u003eSnippet\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#configuration\"\u003eConfiguration\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#selector-option\"\u003eSelector option\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tag\"\u003eTag\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sync\"\u003eSync\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#auto-sync\"\u003eAuto Sync\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#binary\"\u003eBinary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#macos--homebrew\"\u003emacOS / Homebrew\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#redhat-centos\"\u003eRedHat, CentOS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#debian-ubuntu\"\u003eDebian, Ubuntu\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#archlinux\"\u003eArchlinux\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#build\"\u003eBuild\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#migration\"\u003eMigration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#contribute\"\u003eContribute\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMain features\u003c/h1\u003e\u003ca id=\"user-content-main-features\" class=\"anchor\" aria-label=\"Permalink: Main features\" href=\"#main-features\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epet\u003c/code\u003e has the following features.\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eRegister your command snippets easily.\u003c/li\u003e\n\u003cli\u003eUse variables (with one or several default values) in snippets.\u003c/li\u003e\n\u003cli\u003eSearch snippets interactively\u003c/li\u003e\n\u003cli\u003eRun snippets directly.\u003c/li\u003e\n\u003cli\u003eEdit snippets easily (config is just a TOML file).\u003c/li\u003e\n\u003cli\u003eSync snippets via Gist or GitLab Snippets automatically.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCreating a snippet\u003c/h1\u003e\u003ca id=\"user-content-creating-a-snippet\" class=\"anchor\" aria-label=\"Permalink: Creating a snippet\" href=\"#creating-a-snippet\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can create a snippet by running \u003ccode\u003epet new\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$ pet new\nCommand\u0026gt; echo Hello world!\nDescription\u0026gt; print Hello world\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$ pet new\nCommand\u0026gt; echo Hello world!\nDescription\u0026gt; print Hello world\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo see all available arguments, run \u003ccode\u003epet new --help\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eMultiline commands can be entered by using the multiline argument \u003ccode\u003epet new --multiline\u003c/code\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou can use also use variables in snippets, these are called parameters. More information on that in the next section.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou can also \u003cem\u003etag\u003c/em\u003e snippets to search for them faster. More information on that in the tag section.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eParameters\u003c/h1\u003e\u003ca id=\"user-content-parameters\" class=\"anchor\" aria-label=\"Permalink: Parameters\" href=\"#parameters\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThere are \u003ccode\u003e\u0026lt;n_ways\u0026gt;\u003c/code\u003e ways of entering parameters.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThey can contain default values: Hello \u003ccode\u003e\u0026lt;subject=world\u0026gt;\u003c/code\u003e\ndefined by the equal sign.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThey can even contain \u003ccode\u003e\u0026lt;content=spaces \u0026amp; = signs\u0026gt;\u003c/code\u003e where the default value would be \u0026lt;content=\u003cmark\u003espaces \u0026amp; = signs\u003c/mark\u003e\u0026gt;.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eDefault values just can't \u0026lt;end with spaces \u0026gt;.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThey can also contain multiple default values:\nHello \u003ccode\u003e\u0026lt;subject=|_John_||_Sam_||_Jane Doe = special #chars_|\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe values in this case would be :Hello \u0026lt;subject=|_\u003cmark\u003eJohn\u003c/mark\u003e_||_\u003cmark\u003eSam\u003c/mark\u003e_||_\u003cmark\u003eJane Doe = special #chars\u003c/mark\u003e_|\u0026gt;\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eExamples\u003c/h1\u003e\u003ca id=\"user-content-examples\" class=\"anchor\" aria-label=\"Permalink: Examples\" href=\"#examples\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSome examples are shown below.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eRegister the previous command easily\u003c/h2\u003e\u003ca id=\"user-content-register-the-previous-command-easily\" class=\"anchor\" aria-label=\"Permalink: Register the previous command easily\" href=\"#register-the-previous-command-easily\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBy adding the following config to \u003ccode\u003e.bashrc\u003c/code\u003e or \u003ccode\u003e.zshrc\u003c/code\u003e, you can easily register the previous command.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ebash prev function\u003c/h3\u003e\u003ca id=\"user-content-bash-prev-function\" class=\"anchor\" aria-label=\"Permalink: bash prev function\" href=\"#bash-prev-function\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"function prev() {\n PREV=$(echo `history | tail -n2 | head -n1` | sed 's/[0-9]* //')\n sh -c \u0026quot;pet new `printf %q \u0026quot;$PREV\u0026quot;`\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003efunction prev() {\n PREV=$(echo `history | tail -n2 | head -n1` | sed 's/[0-9]* //')\n sh -c \"pet new `printf %q \"$PREV\"`\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ezsh prev function\u003c/h3\u003e\u003ca id=\"user-content-zsh-prev-function\" class=\"anchor\" aria-label=\"Permalink: zsh prev function\" href=\"#zsh-prev-function\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"cat .zshrc\nfunction prev() {\n PREV=$(fc -lrn | head -n 1)\n sh -c \u0026quot;pet new `printf %q \u0026quot;$PREV\u0026quot;`\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ecat .zshrc\nfunction prev() {\n PREV=$(fc -lrn | head -n 1)\n sh -c \"pet new `printf %q \"$PREV\"`\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efish\u003c/h3\u003e\u003ca id=\"user-content-fish\" class=\"anchor\" aria-label=\"Permalink: fish\" href=\"#fish\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSee below for details.\u003cbr\u003e\n\u003ca href=\"https://github.com/otms61/fish-pet\"\u003ehttps://github.com/otms61/fish-pet\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet02.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet02.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSelect snippets at the current line (like C-r) (RECOMMENDED)\u003c/h2\u003e\u003ca id=\"user-content-select-snippets-at-the-current-line-like-c-r-recommended\" class=\"anchor\" aria-label=\"Permalink: Select snippets at the current line (like C-r) (RECOMMENDED)\" href=\"#select-snippets-at-the-current-line-like-c-r-recommended\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ebash\u003c/h3\u003e\u003ca id=\"user-content-bash\" class=\"anchor\" aria-label=\"Permalink: bash\" href=\"#bash\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBy adding the following config to \u003ccode\u003e.bashrc\u003c/code\u003e, you can search snippets and output on the shell.\nThis will also allow you to execute the commands yourself, which will add them to your shell history! This is basically the only way we can manipulate shell history.\nThis also allows you to \u003cem\u003echain\u003c/em\u003e commands! \u003ca href=\"https://github.com/knqyf263/pet/discussions/266\" data-hovercard-type=\"discussion\" data-hovercard-url=\"/knqyf263/pet/discussions/266/hovercard\"\u003eExample here\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou can also customize the search and list commands with options, example \u003ccode\u003e-t\u003c/code\u003e or \u003ccode\u003e--tags\u003c/code\u003e, for example to only search the subset of snippets tagged with myjob \u003ccode\u003epet search -t myjob\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"cat .bashrc\nfunction pet-select() {\n BUFFER=$(pet search --query \u0026quot;$READLINE_LINE\u0026quot;)\n READLINE_LINE=$BUFFER\n READLINE_POINT=${#BUFFER}\n}\nbind -x '\u0026quot;\\C-x\\C-r\u0026quot;: pet-select'\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ecat .bashrc\nfunction pet-select() {\n BUFFER=$(pet search --query \"$READLINE_LINE\")\n READLINE_LINE=$BUFFER\n READLINE_POINT=${#BUFFER}\n}\nbind -x '\"\\C-x\\C-r\": pet-select'\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ezsh\u003c/h3\u003e\u003ca id=\"user-content-zsh\" class=\"anchor\" aria-label=\"Permalink: zsh\" href=\"#zsh\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"cat .zshrc\nfunction pet-select() {\n BUFFER=$(pet search --query \u0026quot;$LBUFFER\u0026quot;)\n CURSOR=$#BUFFER\n zle redisplay\n}\nzle -N pet-select\nstty -ixon\nbindkey '^s' pet-select\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ecat .zshrc\nfunction pet-select() {\n BUFFER=$(pet search --query \"$LBUFFER\")\n CURSOR=$#BUFFER\n zle redisplay\n}\nzle -N pet-select\nstty -ixon\nbindkey '^s' pet-select\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efish\u003c/h3\u003e\u003ca id=\"user-content-fish-1\" class=\"anchor\" aria-label=\"Permalink: fish\" href=\"#fish-1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSee below for details.\u003cbr\u003e\n\u003ca href=\"https://github.com/otms61/fish-pet\"\u003ehttps://github.com/otms61/fish-pet\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet03.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet03.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCopy snippets to clipboard\u003c/h2\u003e\u003ca id=\"user-content-copy-snippets-to-clipboard\" class=\"anchor\" aria-label=\"Permalink: Copy snippets to clipboard\" href=\"#copy-snippets-to-clipboard\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBy using \u003ccode\u003epbcopy\u003c/code\u003e on macOS, you can copy snippets to clipboard.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet06.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet06.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAllow to register from history when using fzf\u003c/h2\u003e\u003ca id=\"user-content-allow-to-register-from-history-when-using-fzf\" class=\"anchor\" aria-label=\"Permalink: Allow to register from history when using fzf\" href=\"#allow-to-register-from-history-when-using-fzf\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eJust export this to your \u003ccode\u003e.bashrc\u003c/code\u003e or \u003ccode\u003e.zshrc\u003c/code\u003e file. This will show your history\nas default (when using fzf) and it also binds the \u003ccode\u003ealt+s\u003c/code\u003e key combination\nto allow you to search and save some previous used command command.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"export FZF_CTRL_R_OPTS=\u0026quot;\n --reverse\n --cycle\n --info=right\n --color header:italic\n --header 'alt+s (pet new)'\n --preview 'echo {}' --preview-window down:3:hidden:wrap \n --bind '?:toggle-preview'\n --bind 'alt-s:execute(pet new --tag {2..})+abort'\u0026quot;\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eexport FZF_CTRL_R_OPTS=\"\n --reverse\n --cycle\n --info=right\n --color header:italic\n --header 'alt+s (pet new)'\n --preview 'echo {}' --preview-window down:3:hidden:wrap \n --bind '?:toggle-preview'\n --bind 'alt-s:execute(pet new --tag {2..})+abort'\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h1\u003e\u003ca id=\"user-content-features\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eEdit snippets\u003c/h2\u003e\u003ca id=\"user-content-edit-snippets\" class=\"anchor\" aria-label=\"Permalink: Edit snippets\" href=\"#edit-snippets\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe snippets are managed in the TOML file, so it's easy to edit.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet04.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet04.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSync snippets\u003c/h2\u003e\u003ca id=\"user-content-sync-snippets\" class=\"anchor\" aria-label=\"Permalink: Sync snippets\" href=\"#sync-snippets\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can share snippets via Gist.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/knqyf263/pet/blob/main/doc/pet05.gif\"\u003e\u003cimg src=\"/knqyf263/pet/raw/main/doc/pet05.gif\" width=\"700\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsage\u003c/h1\u003e\u003ca id=\"user-content-usage\" class=\"anchor\" aria-label=\"Permalink: Usage\" href=\"#usage\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"Usage:\n pet [command]\n\nAvailable Commands:\n clip Copy the selected commands\n configure Edit config file\n edit Edit snippet file\n exec Run the selected commands\n help Help about any command\n list Show all snippets\n new Create a new snippet\n search Search snippets\n sync Sync snippets\n version Print the version number\n\nFlags:\n --config string config file (default is $HOME/.config/pet/config.toml)\n --debug debug mode\n -h, --help help for pet\n\nUse \u0026quot;pet [command] --help\u0026quot; for more information about a command.\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eUsage:\n pet [command]\n\nAvailable Commands:\n clip Copy the selected commands\n configure Edit config file\n edit Edit snippet file\n exec Run the selected commands\n help Help about any command\n list Show all snippets\n new Create a new snippet\n search Search snippets\n sync Sync snippets\n version Print the version number\n\nFlags:\n --config string config file (default is $HOME/.config/pet/config.toml)\n --debug debug mode\n -h, --help help for pet\n\nUse \"pet [command] --help\" for more information about a command.\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSnippet\u003c/h1\u003e\u003ca id=\"user-content-snippet\" class=\"anchor\" aria-label=\"Permalink: Snippet\" href=\"#snippet\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRun \u003ccode\u003epet edit\u003c/code\u003e\u003cbr\u003e\nYou can also register the output of command (but cannot search).\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"snippets\n command = \u0026quot;echo | openssl s_client -connect example.com:443 2\u0026gt;/dev/null |openssl x509 -dates -noout\u0026quot;\n description = \u0026quot;Show expiration date of SSL certificate\u0026quot;\n output = \u0026quot;\u0026quot;\u0026quot;\nnotBefore=Nov 3 00:00:00 2015 GMT\nnotAfter=Nov 28 12:00:00 2018 GMT\u0026quot;\u0026quot;\u0026quot;\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003esnippets\n command = \"echo | openssl s_client -connect example.com:443 2\u0026gt;/dev/null |openssl x509 -dates -noout\"\n description = \"Show expiration date of SSL certificate\"\n output = \"\"\"\nnotBefore=Nov 3 00:00:00 2015 GMT\nnotAfter=Nov 28 12:00:00 2018 GMT\"\"\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRun \u003ccode\u003epet list\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\" Command: echo | openssl s_client -connect example.com:443 2\u0026gt;/dev/null |openssl x509 -dates -noout\nDescription: Show expiration date of SSL certificate\n Output: notBefore=Nov 3 00:00:00 2015 GMT\n notAfter=Nov 28 12:00:00 2018 GMT\n------------------------------\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e Command: echo | openssl s_client -connect example.com:443 2\u0026gt;/dev/null |openssl x509 -dates -noout\nDescription: Show expiration date of SSL certificate\n Output: notBefore=Nov 3 00:00:00 2015 GMT\n notAfter=Nov 28 12:00:00 2018 GMT\n------------------------------\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eConfiguration\u003c/h1\u003e\u003ca id=\"user-content-configuration\" class=\"anchor\" aria-label=\"Permalink: Configuration\" href=\"#configuration\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRun \u003ccode\u003epet configure\u003c/code\u003e\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"[General]\n snippetfile = \u0026quot;path/to/snippet\u0026quot; # specify snippet directory\n editor = \u0026quot;vim\u0026quot; # your favorite text editor\n column = 40 # column size for list command\n selectcmd = \u0026quot;fzf\u0026quot; # selector command for edit command (fzf or peco)\n backend = \u0026quot;gist\u0026quot; # specify backend service to sync snippets (gist, ghe or gitlab, default: gist)\n sortby = \u0026quot;description\u0026quot; # specify how snippets get sorted (recency (default), -recency, description, -description, command, -command, output, -output)\n cmd = [\u0026quot;sh\u0026quot;, \u0026quot;-c\u0026quot;] # specify the command to execute the snippet with\n color = false # enables output coloring with fzf, same as '--color' flag\n format = \u0026quot;[$description]: $command $tags\u0026quot; controls the format of the output when searching\n\n[Gist]\n file_name = \u0026quot;pet-snippet.toml\u0026quot; # specify gist file name\n access_token = \u0026quot;\u0026quot; # your access token\n gist_id = \u0026quot;\u0026quot; # Gist ID\n public = false # public or priate\n auto_sync = false # sync automatically when editing snippets\n\n[GitLab]\n file_name = \u0026quot;pet-snippet.toml\u0026quot; # specify GitLab Snippets file name\n access_token = \u0026quot;XXXXXXXXXXXXX\u0026quot; # your access token\n id = \u0026quot;\u0026quot; # GitLab Snippets ID\n visibility = \u0026quot;private\u0026quot; # public or internal or private\n auto_sync = false # sync automatically when editing snippets\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e[General]\n snippetfile = \"path/to/snippet\" # specify snippet directory\n editor = \"vim\" # your favorite text editor\n column = 40 # column size for list command\n selectcmd = \"fzf\" # selector command for edit command (fzf or peco)\n backend = \"gist\" # specify backend service to sync snippets (gist, ghe or gitlab, default: gist)\n sortby = \"description\" # specify how snippets get sorted (recency (default), -recency, description, -description, command, -command, output, -output)\n cmd = [\"sh\", \"-c\"] # specify the command to execute the snippet with\n color = false # enables output coloring with fzf, same as '--color' flag\n format = \"[$description]: $command $tags\" controls the format of the output when searching\n\n[Gist]\n file_name = \"pet-snippet.toml\" # specify gist file name\n access_token = \"\" # your access token\n gist_id = \"\" # Gist ID\n public = false # public or priate\n auto_sync = false # sync automatically when editing snippets\n\n[GitLab]\n file_name = \"pet-snippet.toml\" # specify GitLab Snippets file name\n access_token = \"XXXXXXXXXXXXX\" # your access token\n id = \"\" # GitLab Snippets ID\n visibility = \"private\" # public or internal or private\n auto_sync = false # sync automatically when editing snippets\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMulti directory and multi file setup\u003c/h2\u003e\u003ca id=\"user-content-multi-directory-and-multi-file-setup\" class=\"anchor\" aria-label=\"Permalink: Multi directory and multi file setup\" href=\"#multi-directory-and-multi-file-setup\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDirectories must be specified as an array.\nAll \u003ccode\u003etoml\u003c/code\u003e files will be scraped and found snippets will be added.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eExample1: single directory\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-toml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"[GHEGist]\n base_url = \u0026quot;\u0026quot; # GHE base URL\n upload_url = \u0026quot;\u0026quot; # GHE upload URL (often the same as the base URL)\n file_name = \u0026quot;pet-snippet.toml\u0026quot; # specify gist file name\n access_token = \u0026quot;\u0026quot; # your access token\n gist_id = \u0026quot;\u0026quot; # Gist ID\n public = false # public or priate\n auto_sync = false # sync automatically when editing snippets\"\u003e\u003cpre\u003e[\u003cspan class=\"pl-en\"\u003eGHEGist\u003c/span\u003e]\n \u003cspan class=\"pl-smi\"\u003ebase_url\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e GHE base URL\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003eupload_url\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e GHE upload URL (often the same as the base URL)\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003efile_name\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003epet-snippet.toml\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e specify gist file name\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003eaccess_token\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e your access token\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003egist_id\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e Gist ID\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003epublic\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e public or priate\u003c/span\u003e\n \u003cspan class=\"pl-smi\"\u003eauto_sync\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e sync automatically when editing snippets\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$ pet configure\n[General]\n...\n snippetdirs = [\u0026quot;/path/to/some/snippets/\u0026quot;]\n...\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$ pet configure\n[General]\n...\n snippetdirs = [\"/path/to/some/snippets/\"]\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExample2: multiple directories\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$ pet configure\n[General]\n...\n snippetdirs = [\u0026quot;/path/to/some/snippets/\u0026quot;, \u0026quot;/more/snippets/\u0026quot;]\n...\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$ pet configure\n[General]\n...\n snippetdirs = [\"/path/to/some/snippets/\", \"/more/snippets/\"]\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf \u003ccode\u003esnippetfile\u003c/code\u003e setting is omitted, new snippets will be added in a separate file to the first directory. The generated filename is time based.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSnippet files in \u003ccode\u003esnippetdirs\u003c/code\u003e will not be added to Gist or GitLab. You've to do version control manually.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSelector option\u003c/h2\u003e\u003ca id=\"user-content-selector-option\" class=\"anchor\" aria-label=\"Permalink: Selector option\" href=\"#selector-option\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExample1: Change layout (bottom up)\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet configure\n[General]\n...\n selectcmd = \u0026quot;fzf\u0026quot;\n...\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet configure\n[General]\n...\n selectcmd = \"fzf\"\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExample2: Enable colorized output\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet configure\n[General]\n...\n selectcmd = \u0026quot;fzf --ansi\u0026quot;\n...\npet search --color\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet configure\n[General]\n...\n selectcmd = \"fzf --ansi\"\n...\npet search --color\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTag\u003c/h2\u003e\u003ca id=\"user-content-tag\" class=\"anchor\" aria-label=\"Permalink: Tag\" href=\"#tag\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can use tags (delimiter: space).\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet new -t\nCommand\u0026gt; ping 8.8.8.8\nDescription\u0026gt; ping\nTag\u0026gt; network google\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet new -t\nCommand\u0026gt; ping 8.8.8.8\nDescription\u0026gt; ping\nTag\u0026gt; network google\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOr edit manually.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet edit\nsnippets\n description = \u0026quot;ping\u0026quot;\n command = \u0026quot;ping 8.8.8.8\u0026quot;\n tag = [\u0026quot;network\u0026quot;, \u0026quot;google\u0026quot;]\n output = \u0026quot;\u0026quot;\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet edit\nsnippets\n description = \"ping\"\n command = \"ping 8.8.8.8\"\n tag = [\"network\", \"google\"]\n output = \"\"\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThey are displayed with snippets.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet search\n[ping]: ping 8.8.8.8 #network #google\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet search\n[ping]: ping 8.8.8.8 #network #google\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can exec snippet with filtering the tag\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet exec -t google\n\n[ping]: ping 8.8.8.8 #network #google\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet exec -t google\n\n[ping]: ping 8.8.8.8 #network #google\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSync\u003c/h2\u003e\u003ca id=\"user-content-sync\" class=\"anchor\" aria-label=\"Permalink: Sync\" href=\"#sync\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGist\u003c/h3\u003e\u003ca id=\"user-content-gist\" class=\"anchor\" aria-label=\"Permalink: Gist\" href=\"#gist\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou must obtain access token.\nGo \u003ca href=\"https://github.com/settings/tokens/new\"\u003ehttps://github.com/settings/tokens/new\u003c/a\u003e and create access token (only need \"gist\" scope).\nSet that to \u003ccode\u003eaccess_token\u003c/code\u003e in \u003ccode\u003e[Gist]\u003c/code\u003e or use an environment variable with the name \u003ccode\u003e$PET_GITHUB_ACCESS_TOKEN\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAfter setting, you can upload snippets to Gist.\u003cbr\u003e\nIf \u003ccode\u003egist_id\u003c/code\u003e is not set, new gist will be created.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nGist ID: 1cedddf4e06d1170bf0c5612fb31a758\nUpload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nGist ID: 1cedddf4e06d1170bf0c5612fb31a758\nUpload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSet \u003ccode\u003eGist ID\u003c/code\u003e to \u003ccode\u003egist_id\u003c/code\u003e in \u003ccode\u003e[Gist]\u003c/code\u003e.\n\u003ccode\u003epet sync\u003c/code\u003e compares the local file and gist with the update date and automatically download or upload.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf the local file is older than gist, \u003ccode\u003epet sync\u003c/code\u003e download snippets.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nDownload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nDownload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf gist is older than the local file, \u003ccode\u003epet sync\u003c/code\u003e upload snippets.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nUpload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nUpload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cem\u003eNote: \u003ccode\u003e-u\u003c/code\u003e option is deprecated\u003c/em\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGHE Gist\u003c/h3\u003e\u003ca id=\"user-content-ghe-gist\" class=\"anchor\" aria-label=\"Permalink: GHE Gist\" href=\"#ghe-gist\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo use Gist with GitHub Enterprise, you need to follow these steps:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eObtain an Access Token: Visit your GitHub Enterprise settings page to create a new access token with just the \"gist\" scope. This is necessary to authenticate and interact with the Gist API on GitHub Enterprise.\u003c/li\u003e\n\u003cli\u003eSet the Access Token: Assign the newly created access token to \u003ccode\u003eaccess_token\u003c/code\u003e in the \u003ccode\u003e[GHEGist]\u003c/code\u003e section of your configuration. Alternatively, you can use an environment variable named \u003ccode\u003e$PET_GITHUB_ENTERPRISE_ACCESS_TOKEN\u003c/code\u003e to manage your token securely.\u003c/li\u003e\n\u003cli\u003eConfigure API Endpoints: Unlike the regular Gist config, you need to set \u003ccode\u003ebase_url\u003c/code\u003e and \u003ccode\u003eupload_url\u003c/code\u003e to point to your GitHub Enterprise API endpoints. For example:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight highlight-source-toml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"\n[GHEGist]\nbase_url = \u0026quot;https://github-enterprise.example.com/api/v3/gists\u0026quot;\nupload_url = \u0026quot;https://github-enterprise.example.com/api/v3/gists\u0026quot; # Often the same as the base URL\"\u003e\u003cpre\u003e[\u003cspan class=\"pl-en\"\u003eGHEGist\u003c/span\u003e]\n\u003cspan class=\"pl-smi\"\u003ebase_url\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003ehttps://github-enterprise.example.com/api/v3/gists\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"pl-smi\"\u003eupload_url\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003ehttps://github-enterprise.example.com/api/v3/gists\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e Often the same as the base URL\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBy setting these parameters, your tool will be configured to interact with GitHub Enterprise Gist, enabling you to sync and manage your snippets just as you would with the standard GitHub Gist service.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eRemember to replace \u003ccode\u003ehttps://github-enterprise.example.com\u003c/code\u003e with the actual URL of your GitHub Enterprise instance. This customization allows your tool to correctly connect to and use the Gist service in a GitHub Enterprise environment.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGitLab Snippets\u003c/h3\u003e\u003ca id=\"user-content-gitlab-snippets\" class=\"anchor\" aria-label=\"Permalink: GitLab Snippets\" href=\"#gitlab-snippets\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou must obtain access token.\nGo \u003ca href=\"https://gitlab.com/-/profile/personal_access_tokens\" rel=\"nofollow\"\u003ehttps://gitlab.com/-/profile/personal_access_tokens\u003c/a\u003e and create access token.\nSet that to \u003ccode\u003eaccess_token\u003c/code\u003e in \u003ccode\u003e[GitLab]\u003c/code\u003e or use an environment variable with the name \u003ccode\u003e$PET_GITLAB_ACCESS_TOKEN\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou also have to configure the \u003ccode\u003eurl\u003c/code\u003e under \u003ccode\u003e[GitLab]\u003c/code\u003e, so pet knows which endpoint to access. You would use \u003ccode\u003eurl = \"https://gitlab.com\"\u003c/code\u003eunless you have another instance of Gitlab.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAt last, switch the \u003ccode\u003ebackend\u003c/code\u003e under \u003ccode\u003e[General]\u003c/code\u003e to \u003ccode\u003ebackend = \"gitlab\"\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAfter setting, you can upload snippets to GitLab Snippets.\nIf \u003ccode\u003eid\u003c/code\u003e is not set, new snippet will be created.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nGitLab Snippet ID: 12345678\nUpload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nGitLab Snippet ID: 12345678\nUpload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSet \u003ccode\u003eGitLab Snippet ID\u003c/code\u003e to \u003ccode\u003eid\u003c/code\u003e in \u003ccode\u003e[GitLab]\u003c/code\u003e.\n\u003ccode\u003epet sync\u003c/code\u003e compares the local file and gitlab with the update date and automatically download or upload.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf the local file is older than gitlab, \u003ccode\u003epet sync\u003c/code\u003e download snippets.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nDownload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nDownload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf gitlab is older than the local file, \u003ccode\u003epet sync\u003c/code\u003e upload snippets.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet sync\nUpload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet sync\nUpload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAuto Sync\u003c/h2\u003e\u003ca id=\"user-content-auto-sync\" class=\"anchor\" aria-label=\"Permalink: Auto Sync\" href=\"#auto-sync\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can sync snippets automatically.\nSet \u003ccode\u003etrue\u003c/code\u003e to \u003ccode\u003eauto_sync\u003c/code\u003e in \u003ccode\u003e[Gist]\u003c/code\u003e, \u003ccode\u003e[GHEGist]\u003c/code\u003e or \u003ccode\u003e[GitLab]\u003c/code\u003e.\nThen, your snippets sync automatically when \u003ccode\u003epet new\u003c/code\u003e or \u003ccode\u003epet edit\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"pet edit\nGetting Gist...\nUpdating Gist...\nUpload success\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003epet edit\nGetting Gist...\nUpdating Gist...\nUpload success\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInstallation\u003c/h1\u003e\u003ca id=\"user-content-installation\" class=\"anchor\" aria-label=\"Permalink: Installation\" href=\"#installation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou need to install selector command (\u003ca href=\"https://github.com/junegunn/fzf\"\u003efzf\u003c/a\u003e or \u003ca href=\"https://github.com/peco/peco\"\u003epeco\u003c/a\u003e).\u003cbr\u003e\n\u003ccode\u003ehomebrew\u003c/code\u003e install \u003ccode\u003efzf\u003c/code\u003e automatically.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAfter you install Pet, it's HIGHLY recommended to install the shortcuts mentioned in the section on \u003ca href=\"#zsh-prev-function\"\u003eZSH Prev\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBinary\u003c/h2\u003e\u003ca id=\"user-content-binary\" class=\"anchor\" aria-label=\"Permalink: Binary\" href=\"#binary\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eGo to \u003ca href=\"https://github.com/knqyf263/pet/releases\"\u003ethe releases page\u003c/a\u003e, find the version you want, and download the zip file. Unpack the zip file, and put the binary to somewhere you want (on UNIX-y systems, /usr/local/bin or the like). Make sure it has execution bits turned on.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emacOS / Homebrew\u003c/h2\u003e\u003ca id=\"user-content-macos--homebrew\" class=\"anchor\" aria-label=\"Permalink: macOS / Homebrew\" href=\"#macos--homebrew\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInstall \u003ca href=\"#Installation\"\u003eselector command\u003c/a\u003e first.\nYou can use homebrew on macOS.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"brew install knqyf263/pet/pet\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ebrew install knqyf263/pet/pet\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf you receive an error (\u003ccode\u003eError: knqyf263/pet/pet 64 already installed\u003c/code\u003e) during \u003ccode\u003ebrew upgrade\u003c/code\u003e, try the following command\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"brew unlink pet \u0026amp;\u0026amp; brew uninstall pet\n(rm -rf /usr/local/Cellar/pet/64)\nbrew install knqyf263/pet/pet\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ebrew unlink pet \u0026amp;\u0026amp; brew uninstall pet\n(rm -rf /usr/local/Cellar/pet/64)\nbrew install knqyf263/pet/pet\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFedora, RedHat, CentOS\u003c/h2\u003e\u003ca id=\"user-content-fedora-redhat-centos\" class=\"anchor\" aria-label=\"Permalink: Fedora, RedHat, CentOS\" href=\"#fedora-redhat-centos\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInstall \u003ca href=\"#Installation\"\u003eselector command\u003c/a\u003e first.\nDownload rpm package from \u003ca href=\"https://github.com/knqyf263/pet/releases\"\u003ethe releases page\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"sudo rpm -ivh https://github.com/knqyf263/pet/releases/download/vx.x.x/pet_x.x.x_linux_amd64.rpm\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003esudo rpm -ivh https://github.com/knqyf263/pet/releases/download/vx.x.x/pet_x.x.x_linux_amd64.rpm\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAlso available on the \u003ca href=\"https://terra.fyralabs.com/\" rel=\"nofollow\"\u003eTerra repository\u003c/a\u003e (3rd party) for Fedora/Fedora-based distros\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"sudo dnf install pet\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003esudo dnf install pet\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDebian, Ubuntu\u003c/h2\u003e\u003ca id=\"user-content-debian-ubuntu\" class=\"anchor\" aria-label=\"Permalink: Debian, Ubuntu\" href=\"#debian-ubuntu\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInstall \u003ca href=\"#Installation\"\u003eselector command\u003c/a\u003e first.\nDownload deb package from \u003ca href=\"https://github.com/knqyf263/pet/releases\"\u003ethe releases page\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"wget https://github.com/knqyf263/pet/releases/download/vx.x.x/pet_x.x.x_linux_amd64.deb\ndpkg -i pet_x.x.x_linux_amd64.deb\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003ewget https://github.com/knqyf263/pet/releases/download/vx.x.x/pet_x.x.x_linux_amd64.deb\ndpkg -i pet_x.x.x_linux_amd64.deb\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eArchlinux\u003c/h2\u003e\u003ca id=\"user-content-archlinux\" class=\"anchor\" aria-label=\"Permalink: Archlinux\" href=\"#archlinux\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInstall \u003ca href=\"#Installation\"\u003eselector command\u003c/a\u003e first.\nTwo packages are available in \u003ca href=\"https://wiki.archlinux.org/index.php/Arch_User_Repository\" rel=\"nofollow\"\u003eAUR\u003c/a\u003e.\nYou can install the package \u003ca href=\"https://aur.archlinux.org/packages/pet-git\" rel=\"nofollow\"\u003efrom source\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"yay -S pet-git\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eyay -S pet-git\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOr \u003ca href=\"https://aur.archlinux.org/packages/pet-bin\" rel=\"nofollow\"\u003efrom the binary\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"yay -S pet-bin\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eyay -S pet-bin\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBuild\u003c/h2\u003e\u003ca id=\"user-content-build\" class=\"anchor\" aria-label=\"Permalink: Build\" href=\"#build\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInstall \u003ca href=\"#Installation\"\u003eselector command\u003c/a\u003e first.\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"mkdir -p $GOPATH/src/github.com/knqyf263\ncd $GOPATH/src/github.com/knqyf263\ngit clone https://github.com/knqyf263/pet.git\ncd pet\nmake install\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003emkdir -p $GOPATH/src/github.com/knqyf263\ncd $GOPATH/src/github.com/knqyf263\ngit clone https://github.com/knqyf263/pet.git\ncd pet\nmake install\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMigration\u003c/h1\u003e\u003ca id=\"user-content-migration\" class=\"anchor\" aria-label=\"Permalink: Migration\" href=\"#migration\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFrom Keep\u003c/h2\u003e\u003ca id=\"user-content-from-keep\" class=\"anchor\" aria-label=\"Permalink: From Keep\" href=\"#from-keep\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://blog.saltedbrain.org/2018/12/converting-keep-to-pet-snippets.html\" rel=\"nofollow\"\u003ehttps://blog.saltedbrain.org/2018/12/converting-keep-to-pet-snippets.html\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eContribute\u003c/h1\u003e\u003ca id=\"user-content-contribute\" class=\"anchor\" aria-label=\"Permalink: Contribute\" href=\"#contribute\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003efork a repository: github.com/knqyf263/pet to github.com/you/repo\u003c/li\u003e\n\u003cli\u003eget original code: \u003ccode\u003ego get github.com/knqyf263/pet\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ework on original code\u003c/li\u003e\n\u003cli\u003eadd remote to your repo: git remote add myfork \u003ca href=\"https://github.com/you/repo.git\"\u003ehttps://github.com/you/repo.git\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epush your changes: git push myfork\u003c/li\u003e\n\u003cli\u003ecreate a new Pull Request\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003esee \u003ca href=\"http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html\" rel=\"nofollow\"\u003eGitHub and Go: forking, pull requests, and go-getting\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLicense\u003c/h1\u003e\u003ca id=\"user-content-license\" class=\"anchor\" aria-label=\"Permalink: License\" href=\"#license\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMIT\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAuthor\u003c/h1\u003e\u003ca id=\"user-content-author\" class=\"anchor\" aria-label=\"Permalink: Author\" href=\"#author\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTeppei Fukuda\u003c/p\u003e\n\u003c/article\u003e","renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"Pet - CLI Snippet Manager","kind":"section_1","ident_start":2,"ident_end":27,"extent_start":0,"extent_end":353,"fully_qualified_name":"Pet - CLI Snippet Manager","ident_utf16":{"start":{"line_number":0,"utf16_col":2},"end":{"line_number":0,"utf16_col":27}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":10,"utf16_col":0}}},{"name":"Motivation","kind":"section_1","ident_start":355,"ident_end":365,"extent_start":353,"extent_end":1402,"fully_qualified_name":"Motivation","ident_utf16":{"start":{"line_number":10,"utf16_col":2},"end":{"line_number":10,"utf16_col":12}},"extent_utf16":{"start":{"line_number":10,"utf16_col":0},"end":{"line_number":28,"utf16_col":0}}},{"name":"TOC","kind":"section_1","ident_start":1404,"ident_end":1407,"extent_start":1402,"extent_end":2497,"fully_qualified_name":"TOC","ident_utf16":{"start":{"line_number":28,"utf16_col":2},"end":{"line_number":28,"utf16_col":5}},"extent_utf16":{"start":{"line_number":28,"utf16_col":0},"end":{"line_number":63,"utf16_col":0}}},{"name":"Main features","kind":"section_1","ident_start":2499,"ident_end":2512,"extent_start":2497,"extent_end":2825,"fully_qualified_name":"Main features","ident_utf16":{"start":{"line_number":63,"utf16_col":2},"end":{"line_number":63,"utf16_col":15}},"extent_utf16":{"start":{"line_number":63,"utf16_col":0},"end":{"line_number":73,"utf16_col":0}}},{"name":"Creating a snippet","kind":"section_1","ident_start":2827,"ident_end":2845,"extent_start":2825,"extent_end":3338,"fully_qualified_name":"Creating a snippet","ident_utf16":{"start":{"line_number":73,"utf16_col":2},"end":{"line_number":73,"utf16_col":20}},"extent_utf16":{"start":{"line_number":73,"utf16_col":0},"end":{"line_number":92,"utf16_col":0}}},{"name":"Parameters","kind":"section_1","ident_start":3340,"ident_end":3350,"extent_start":3338,"extent_end":3925,"fully_qualified_name":"Parameters","ident_utf16":{"start":{"line_number":92,"utf16_col":2},"end":{"line_number":92,"utf16_col":12}},"extent_utf16":{"start":{"line_number":92,"utf16_col":0},"end":{"line_number":107,"utf16_col":0}}},{"name":"Examples","kind":"section_1","ident_start":3927,"ident_end":3935,"extent_start":3925,"extent_end":6281,"fully_qualified_name":"Examples","ident_utf16":{"start":{"line_number":107,"utf16_col":2},"end":{"line_number":107,"utf16_col":10}},"extent_utf16":{"start":{"line_number":107,"utf16_col":0},"end":{"line_number":201,"utf16_col":0}}},{"name":"Register the previous command easily","kind":"section_2","ident_start":3971,"ident_end":4007,"extent_start":3968,"extent_end":4510,"fully_qualified_name":"Register the previous command easily","ident_utf16":{"start":{"line_number":110,"utf16_col":3},"end":{"line_number":110,"utf16_col":39}},"extent_utf16":{"start":{"line_number":110,"utf16_col":0},"end":{"line_number":138,"utf16_col":0}}},{"name":"bash prev function","kind":"section_3","ident_start":4116,"ident_end":4134,"extent_start":4112,"extent_end":4270,"fully_qualified_name":"bash prev function","ident_utf16":{"start":{"line_number":113,"utf16_col":4},"end":{"line_number":113,"utf16_col":22}},"extent_utf16":{"start":{"line_number":113,"utf16_col":0},"end":{"line_number":122,"utf16_col":0}}},{"name":"zsh prev function","kind":"section_3","ident_start":4274,"ident_end":4291,"extent_start":4270,"extent_end":4401,"fully_qualified_name":"zsh prev function","ident_utf16":{"start":{"line_number":122,"utf16_col":4},"end":{"line_number":122,"utf16_col":21}},"extent_utf16":{"start":{"line_number":122,"utf16_col":0},"end":{"line_number":132,"utf16_col":0}}},{"name":"fish","kind":"section_3","ident_start":4405,"ident_end":4409,"extent_start":4401,"extent_end":4510,"fully_qualified_name":"fish","ident_utf16":{"start":{"line_number":132,"utf16_col":4},"end":{"line_number":132,"utf16_col":8}},"extent_utf16":{"start":{"line_number":132,"utf16_col":0},"end":{"line_number":138,"utf16_col":0}}},{"name":"Select snippets at the current line (like C-r) (RECOMMENDED)","kind":"section_2","ident_start":4513,"ident_end":4573,"extent_start":4510,"extent_end":5609,"fully_qualified_name":"Select snippets at the current line (like C-r) (RECOMMENDED)","ident_utf16":{"start":{"line_number":138,"utf16_col":3},"end":{"line_number":138,"utf16_col":63}},"extent_utf16":{"start":{"line_number":138,"utf16_col":0},"end":{"line_number":178,"utf16_col":0}}},{"name":"bash","kind":"section_3","ident_start":4579,"ident_end":4583,"extent_start":4575,"extent_end":5315,"fully_qualified_name":"bash","ident_utf16":{"start":{"line_number":140,"utf16_col":4},"end":{"line_number":140,"utf16_col":8}},"extent_utf16":{"start":{"line_number":140,"utf16_col":0},"end":{"line_number":157,"utf16_col":0}}},{"name":"zsh","kind":"section_3","ident_start":5319,"ident_end":5322,"extent_start":5315,"extent_end":5499,"fully_qualified_name":"zsh","ident_utf16":{"start":{"line_number":157,"utf16_col":4},"end":{"line_number":157,"utf16_col":7}},"extent_utf16":{"start":{"line_number":157,"utf16_col":0},"end":{"line_number":171,"utf16_col":0}}},{"name":"fish","kind":"section_3","ident_start":5503,"ident_end":5507,"extent_start":5499,"extent_end":5609,"fully_qualified_name":"fish","ident_utf16":{"start":{"line_number":171,"utf16_col":4},"end":{"line_number":171,"utf16_col":8}},"extent_utf16":{"start":{"line_number":171,"utf16_col":0},"end":{"line_number":178,"utf16_col":0}}},{"name":"Copy snippets to clipboard","kind":"section_2","ident_start":5612,"ident_end":5638,"extent_start":5609,"extent_end":5743,"fully_qualified_name":"Copy snippets to clipboard","ident_utf16":{"start":{"line_number":178,"utf16_col":3},"end":{"line_number":178,"utf16_col":29}},"extent_utf16":{"start":{"line_number":178,"utf16_col":0},"end":{"line_number":183,"utf16_col":0}}},{"name":"Allow to register from history when using fzf","kind":"section_2","ident_start":5746,"ident_end":5791,"extent_start":5743,"extent_end":6281,"fully_qualified_name":"Allow to register from history when using fzf","ident_utf16":{"start":{"line_number":183,"utf16_col":3},"end":{"line_number":183,"utf16_col":48}},"extent_utf16":{"start":{"line_number":183,"utf16_col":0},"end":{"line_number":201,"utf16_col":0}}},{"name":"Features","kind":"section_1","ident_start":6283,"ident_end":6291,"extent_start":6281,"extent_end":6506,"fully_qualified_name":"Features","ident_utf16":{"start":{"line_number":201,"utf16_col":2},"end":{"line_number":201,"utf16_col":10}},"extent_utf16":{"start":{"line_number":201,"utf16_col":0},"end":{"line_number":214,"utf16_col":0}}},{"name":"Edit snippets","kind":"section_2","ident_start":6296,"ident_end":6309,"extent_start":6293,"extent_end":6416,"fully_qualified_name":"Edit snippets","ident_utf16":{"start":{"line_number":203,"utf16_col":3},"end":{"line_number":203,"utf16_col":16}},"extent_utf16":{"start":{"line_number":203,"utf16_col":0},"end":{"line_number":209,"utf16_col":0}}},{"name":"Sync snippets","kind":"section_2","ident_start":6419,"ident_end":6432,"extent_start":6416,"extent_end":6506,"fully_qualified_name":"Sync snippets","ident_utf16":{"start":{"line_number":209,"utf16_col":3},"end":{"line_number":209,"utf16_col":16}},"extent_utf16":{"start":{"line_number":209,"utf16_col":0},"end":{"line_number":214,"utf16_col":0}}},{"name":"Usage","kind":"section_1","ident_start":6508,"ident_end":6513,"extent_start":6506,"extent_end":7138,"fully_qualified_name":"Usage","ident_utf16":{"start":{"line_number":214,"utf16_col":2},"end":{"line_number":214,"utf16_col":7}},"extent_utf16":{"start":{"line_number":214,"utf16_col":0},"end":{"line_number":240,"utf16_col":0}}},{"name":"Snippet","kind":"section_1","ident_start":7140,"ident_end":7147,"extent_start":7138,"extent_end":7808,"fully_qualified_name":"Snippet","ident_utf16":{"start":{"line_number":240,"utf16_col":2},"end":{"line_number":240,"utf16_col":9}},"extent_utf16":{"start":{"line_number":240,"utf16_col":0},"end":{"line_number":264,"utf16_col":0}}},{"name":"Configuration","kind":"section_1","ident_start":7810,"ident_end":7823,"extent_start":7808,"extent_end":14562,"fully_qualified_name":"Configuration","ident_utf16":{"start":{"line_number":264,"utf16_col":2},"end":{"line_number":264,"utf16_col":15}},"extent_utf16":{"start":{"line_number":264,"utf16_col":0},"end":{"line_number":483,"utf16_col":0}}},{"name":"Multi directory and multi file setup","kind":"section_2","ident_start":9313,"ident_end":9349,"extent_start":9310,"extent_end":10413,"fully_qualified_name":"Multi directory and multi file setup","ident_utf16":{"start":{"line_number":295,"utf16_col":3},"end":{"line_number":295,"utf16_col":39}},"extent_utf16":{"start":{"line_number":295,"utf16_col":0},"end":{"line_number":335,"utf16_col":0}}},{"name":"Selector option","kind":"section_2","ident_start":10416,"ident_end":10431,"extent_start":10413,"extent_end":10651,"fully_qualified_name":"Selector option","ident_utf16":{"start":{"line_number":335,"utf16_col":3},"end":{"line_number":335,"utf16_col":18}},"extent_utf16":{"start":{"line_number":335,"utf16_col":0},"end":{"line_number":356,"utf16_col":0}}},{"name":"Tag","kind":"section_2","ident_start":10654,"ident_end":10657,"extent_start":10651,"extent_end":11122,"fully_qualified_name":"Tag","ident_utf16":{"start":{"line_number":356,"utf16_col":3},"end":{"line_number":356,"utf16_col":6}},"extent_utf16":{"start":{"line_number":356,"utf16_col":0},"end":{"line_number":389,"utf16_col":0}}},{"name":"Sync","kind":"section_2","ident_start":11125,"ident_end":11129,"extent_start":11122,"extent_end":14310,"fully_qualified_name":"Sync","ident_utf16":{"start":{"line_number":389,"utf16_col":3},"end":{"line_number":389,"utf16_col":7}},"extent_utf16":{"start":{"line_number":389,"utf16_col":0},"end":{"line_number":471,"utf16_col":0}}},{"name":"Gist","kind":"section_3","ident_start":11134,"ident_end":11138,"extent_start":11130,"extent_end":11931,"fully_qualified_name":"Gist","ident_utf16":{"start":{"line_number":390,"utf16_col":4},"end":{"line_number":390,"utf16_col":8}},"extent_utf16":{"start":{"line_number":390,"utf16_col":0},"end":{"line_number":420,"utf16_col":0}}},{"name":"GHE Gist","kind":"section_3","ident_start":11935,"ident_end":11943,"extent_start":11931,"extent_end":13282,"fully_qualified_name":"GHE Gist","ident_utf16":{"start":{"line_number":420,"utf16_col":4},"end":{"line_number":420,"utf16_col":12}},"extent_utf16":{"start":{"line_number":420,"utf16_col":0},"end":{"line_number":439,"utf16_col":0}}},{"name":"GitLab Snippets","kind":"section_3","ident_start":13286,"ident_end":13301,"extent_start":13282,"extent_end":14310,"fully_qualified_name":"GitLab Snippets","ident_utf16":{"start":{"line_number":439,"utf16_col":4},"end":{"line_number":439,"utf16_col":19}},"extent_utf16":{"start":{"line_number":439,"utf16_col":0},"end":{"line_number":471,"utf16_col":0}}},{"name":"Auto Sync","kind":"section_2","ident_start":14313,"ident_end":14322,"extent_start":14310,"extent_end":14562,"fully_qualified_name":"Auto Sync","ident_utf16":{"start":{"line_number":471,"utf16_col":3},"end":{"line_number":471,"utf16_col":12}},"extent_utf16":{"start":{"line_number":471,"utf16_col":0},"end":{"line_number":483,"utf16_col":0}}},{"name":"Installation","kind":"section_1","ident_start":14564,"ident_end":14576,"extent_start":14562,"extent_end":16801,"fully_qualified_name":"Installation","ident_utf16":{"start":{"line_number":483,"utf16_col":2},"end":{"line_number":483,"utf16_col":14}},"extent_utf16":{"start":{"line_number":483,"utf16_col":0},"end":{"line_number":551,"utf16_col":0}}},{"name":"Binary","kind":"section_2","ident_start":14875,"ident_end":14881,"extent_start":14872,"extent_end":15161,"fully_qualified_name":"Binary","ident_utf16":{"start":{"line_number":490,"utf16_col":3},"end":{"line_number":490,"utf16_col":9}},"extent_utf16":{"start":{"line_number":490,"utf16_col":0},"end":{"line_number":493,"utf16_col":0}}},{"name":"macOS / Homebrew","kind":"section_2","ident_start":15164,"ident_end":15180,"extent_start":15161,"extent_end":15535,"fully_qualified_name":"macOS / Homebrew","ident_utf16":{"start":{"line_number":493,"utf16_col":3},"end":{"line_number":493,"utf16_col":19}},"extent_utf16":{"start":{"line_number":493,"utf16_col":0},"end":{"line_number":509,"utf16_col":0}}},{"name":"Fedora, RedHat, CentOS","kind":"section_2","ident_start":15538,"ident_end":15560,"extent_start":15535,"extent_end":15947,"fully_qualified_name":"Fedora, RedHat, CentOS","ident_utf16":{"start":{"line_number":509,"utf16_col":3},"end":{"line_number":509,"utf16_col":25}},"extent_utf16":{"start":{"line_number":509,"utf16_col":0},"end":{"line_number":520,"utf16_col":0}}},{"name":"Debian, Ubuntu","kind":"section_2","ident_start":15950,"ident_end":15964,"extent_start":15947,"extent_end":16233,"fully_qualified_name":"Debian, Ubuntu","ident_utf16":{"start":{"line_number":520,"utf16_col":3},"end":{"line_number":520,"utf16_col":17}},"extent_utf16":{"start":{"line_number":520,"utf16_col":0},"end":{"line_number":528,"utf16_col":0}}},{"name":"Archlinux","kind":"section_2","ident_start":16236,"ident_end":16245,"extent_start":16233,"extent_end":16591,"fully_qualified_name":"Archlinux","ident_utf16":{"start":{"line_number":528,"utf16_col":3},"end":{"line_number":528,"utf16_col":12}},"extent_utf16":{"start":{"line_number":528,"utf16_col":0},"end":{"line_number":540,"utf16_col":0}}},{"name":"Build","kind":"section_2","ident_start":16594,"ident_end":16599,"extent_start":16591,"extent_end":16801,"fully_qualified_name":"Build","ident_utf16":{"start":{"line_number":540,"utf16_col":3},"end":{"line_number":540,"utf16_col":8}},"extent_utf16":{"start":{"line_number":540,"utf16_col":0},"end":{"line_number":551,"utf16_col":0}}},{"name":"Migration","kind":"section_1","ident_start":16803,"ident_end":16812,"extent_start":16801,"extent_end":16901,"fully_qualified_name":"Migration","ident_utf16":{"start":{"line_number":551,"utf16_col":2},"end":{"line_number":551,"utf16_col":11}},"extent_utf16":{"start":{"line_number":551,"utf16_col":0},"end":{"line_number":555,"utf16_col":0}}},{"name":"From Keep","kind":"section_2","ident_start":16816,"ident_end":16825,"extent_start":16813,"extent_end":16901,"fully_qualified_name":"From Keep","ident_utf16":{"start":{"line_number":552,"utf16_col":3},"end":{"line_number":552,"utf16_col":12}},"extent_utf16":{"start":{"line_number":552,"utf16_col":0},"end":{"line_number":555,"utf16_col":0}}},{"name":"Contribute","kind":"section_1","ident_start":16903,"ident_end":16913,"extent_start":16901,"extent_end":17360,"fully_qualified_name":"Contribute","ident_utf16":{"start":{"line_number":555,"utf16_col":2},"end":{"line_number":555,"utf16_col":12}},"extent_utf16":{"start":{"line_number":555,"utf16_col":0},"end":{"line_number":568,"utf16_col":0}}},{"name":"License","kind":"section_1","ident_start":17362,"ident_end":17369,"extent_start":17360,"extent_end":17375,"fully_qualified_name":"License","ident_utf16":{"start":{"line_number":568,"utf16_col":2},"end":{"line_number":568,"utf16_col":9}},"extent_utf16":{"start":{"line_number":568,"utf16_col":0},"end":{"line_number":571,"utf16_col":0}}},{"name":"Author","kind":"section_1","ident_start":17377,"ident_end":17383,"extent_start":17375,"extent_end":17398,"fully_qualified_name":"Author","ident_utf16":{"start":{"line_number":571,"utf16_col":2},"end":{"line_number":571,"utf16_col":8}},"extent_utf16":{"start":{"line_number":571,"utf16_col":0},"end":{"line_number":573,"utf16_col":0}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/knqyf263/pet/branches":{"post":"txPq8VI_OLOPtnJWTMK_MX9DfUiX-3sxbT8abaTbKwzIafdyoCWFZBTCdxi-yVuhnteM6wyYWtxupzonspwNUg"},"/repos/preferences":{"post":"Jzco8vnrrMuA7uta5v40Sq6aHGsKmgfeYMvz-Ad5qV0_dprRzg2UB4I3dhA49GJ9ghQcDjEQxMnGHHTMUUaURg"}}},"title":"pet/README.md at main · knqyf263/pet","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}</script>
</main>
<footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" >
Footer
<nav aria-label="Footer">
<h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>
<ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
</li>
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
</li>
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
</li>
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
</li>
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
</li>
<li class="mx-2">
<a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
</li>
<li class="mx-2" >
Manage cookies
</ul>
</nav>
<ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
data-locale="en"
data-initial-cookie-consent-allowed=""
data-cookie-consent-required="true"
></ghcc-consent>
<template id="site-details-dialog">
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
<template id="snippet-clipboard-copy-button">
</div>
<div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
<div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
</html>