[PYTHON] Denken Sie an selektive Schnittstellen in der Befehlszeile

Einführung

Die selektive Schnittstelle hier ist ein Anything-ähnliches Tool in Emacs. Es wird einfacher sein, diesen Punkt zu verstehen, wenn man sich das Bild ansieht.

Solche Werkzeuge haben eine Vielzahl von Anwendungen.

Über die selektive Schnittstelle können Sie das Ausgabeergebnis auswählen, indem Sie es mit einem Rohr verbinden. Und der ausgewählte wird schließlich ausgegeben.

Mit dieser Ausgabe können Sie verschiedene Tools vermitteln und Werte abrufen.

percol

Ein in python geschriebenes selektives Interface-Tool.

https://github.com/mooz/percol

Installation von Perkol

python


$ sudo pip install percol

Oder

python


$ git clone https://github.com/mooz/percol

$ cd !$:t

$ sudo python setup.py install

Grundlegende Verwendung von Perkol

python


$ ls | percol

Entspricht einer bestimmten Zeichenfolge von Anfang an.

python


$ ls ~ | percol --query="s"

Passen Sie die linke Seite der Eingabeaufforderung an.

python


$ ls | percol --right-prompt=prompt1

Perkolschlüsselbindung

Mit percol können Sie auch Tastenkombinationen festlegen, indem Sie eine Einstellungsdatei erstellen.

python


$ mkdir ~/.percol.d

$ vim ~/.percol.d/rc.py

python:~/.percol.d/rc.py


# https://gist.github.com/mitukiii/4234173
import sys, commands
from percol.command import SelectorCommand
from percol.key import SPECIAL_KEYS
from percol.finder import FinderMultiQueryMigemo, FinderMultiQueryRegex

## prompt
# Case Insensitive /Eingabeaufforderung gemäß Match-Methode
def dynamic_prompt():
    prompt = ur""
    if percol.model.finder.__class__ == FinderMultiQueryMigemo:
        prompt += "[Migemo]"
    elif percol.model.finder.__class__ == FinderMultiQueryRegex:
        prompt += "[Regexp]"
    else:
        prompt += "[String]"
    if percol.model.finder.case_insensitive:
        prompt += "[a]"
    else:
        prompt += "[A]"
    prompt += "> %q"
    return prompt

percol.view.__class__.PROMPT = property(lambda self: dynamic_prompt())

## migemo
#Ändern Sie den Wörterbuchpfad unter Mac und Ubuntu
if sys.platform == "darwin":
    FinderMultiQueryMigemo.dictionary_path = "/usr/local/Cellar/cmigemo/20110227/share/migemo/utf-8/migemo-dict"
else:
    FinderMultiQueryMigemo.dictionary_path = "/usr/local/share/migemo/utf-8/migemo-dict"

## kill
#Teilen Sie kill (yank) mit der Zwischenablage auf dem Mac
if sys.platform == "darwin":
    def copy_end_of_line_as_kill(self):
        commands.getoutput("echo " + self.model.query[self.model.caret:] + " | pbcopy")
        self.model.query  = self.model.query[:self.model.caret]

    def paste_as_yank(self):
        self.model.insert_string(commands.getoutput("pbpaste"))

    SelectorCommand.kill_end_of_line = copy_end_of_line_as_kill
    SelectorCommand.yank = paste_as_yank

## keymap
#Stellen Sie sicher, dass das Löschen (Rücktaste) auf dem Mac funktioniert
SPECIAL_KEYS.update({
    127: '<backspace>'
})
percol.import_keymap({
    "C-a" : lambda percol: percol.command.beginning_of_line(),
    "C-e" : lambda percol: percol.command.end_of_line(),
    "C-b" : lambda percol: percol.command.backward_char(),
    "C-f" : lambda percol: percol.command.forward_char(),
    "C-d" : lambda percol: percol.command.delete_forward_char(),
    "C-h" : lambda percol: percol.command.delete_backward_char(),
    "C-k" : lambda percol: percol.command.kill_end_of_line(),
    "C-y" : lambda percol: percol.command.yank(),
    "C-n" : lambda percol: percol.command.select_next(),
    "C-p" : lambda percol: percol.command.select_previous(),
    "C-v" : lambda percol: percol.command.select_next_page(),
    "M-v" : lambda percol: percol.command.select_previous_page(),
    "M-<" : lambda percol: percol.command.select_top(),
    "M->" : lambda percol: percol.command.select_bottom(),
    "C-m" : lambda percol: percol.finish(),
    "C-j" : lambda percol: percol.finish(),
    "C-g" : lambda percol: percol.cancel(),
    "M-c" : lambda percol: percol.command.toggle_case_sensitive(),
    "M-m" : lambda percol: percol.command.toggle_finder(FinderMultiQueryMigemo),
    "M-r" : lambda percol: percol.command.toggle_finder(FinderMultiQueryRegex)
})

Referenz: Super praktisch, wenn Sie Perkol setzen und mit zsh kombinieren

Ich habe die Terminalversion von Perkol anstelle von Zaw ausprobiert

Angewandte Verwendung von Perkol

Wählen Sie mit Perkol mehrere Zeilen aus

Wenn Sie mehrere Zeilen auswählen möchten, verwenden Sie "percol.command.toggle_mark_and_next ()". Standardmäßig scheint es auf "C-S" eingestellt zu sein.

python


$ ps ax | percol | awk '{ print $1 }' | xargs kill

In meinem Fall schreibe ich die folgende Konfigurationsdatei. Mehrzeilige Markierung und Markierungsstornierung.

python:~/.percol.d/rc.py


    "C-n" : lambda percol: percol.command.toggle_mark_and_next(),
    "C-p" : lambda percol: percol.command.unmark_all(),

Sie können das Trennzeichen auch mit dem folgenden Befehl festlegen.

python


$ ls | percol | tr '\n' ';'

zsh Fertigstellung von Perkol

Beim Klonen von GitHub scheint es von Anfang an vorbereitet zu sein.

https://github.com/mooz/percol/blob/master/tools/zsh/_percol

python


$ curl -o ~/.zsh/functions/_percol https://raw.githubusercontent.com/mooz/percol/master/tools/zsh/_percol

$ exec $SHELL

CD mit Perkol

Wenn cdr erstellt wird, können Sie sich anscheinend problemlos mit der folgenden Methode bewegen.

~/.zshrc


# http://piyopiyoducky.net/blog/2013/08/17/cdr-with-percol/
### search a destination from cdr list
function percol-get-destination-from-cdr() {
    cdr -l | \
        sed -e 's/^[[:digit:]]*[[:blank:]]*//' | \
        percol --match-method migemo --query "$LBUFFER"
}

### search a destination from cdr list and cd the destination
function percol-cdr() {
    local destination="$(percol-get-destination-from-cdr)"
    if [ -n "$destination" ]; then
        BUFFER="cd $destination"
        zle accept-line
    else
        zle reset-prompt
    fi
}
zle -N percol-cdr
bindkey '^xb' percol-cdr

Ansonsten klicken Sie hier.

~/.zshrc


# https://github.com/shibayu36/config-file/blob/master/.zsh/percol-sources/cdr.zsh
function percol-cdr () {
    local selected_dir=$(cdr -l | awk '{ print $2 }' | percol)
    if [ -n "$selected_dir" ]; then
        BUFFER="cd ${selected_dir}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N percol-cdr
bindkey '^@' percol-cdr

Referenz:

Ich habe eine CD in das Verzeichnis geschrieben, in das ich kürzlich mit percol gegangen bin

Wechseln Sie zu Anything-like in das Verzeichnis, das kürzlich von cdr und percol von Zsh --PiyoPiyoDucky verschoben wurde

Migration vom automatischen Sprung zum perkolbasierten Verzeichnissprung | Web Scratch

Perkol und Ghq

Erleichtert die Verwendung Ihrer Verzeichnisstruktur.

python


$ go get github.com/motemen/ghq

Details werden in den folgenden Artikeln vorgestellt.

ghq + percol + docc | SOTA

Einheitliche und effiziente Verwaltung lokaler Repositories mithilfe von ghq - delirious Thoughts

Die zsh-Abschlussdatei des ghq-Befehls wurde geändert, daher erkläre ich den Prozess --Qiita

Perkol und Git

Percol ist auch sehr nützlich, um die Verwendung des Befehls git zu vereinfachen.

Details werden in den folgenden Artikeln vorgestellt.

git-issue + git-flow + percol

Einstellungen, die das Arbeiten erleichtern, indem Redmine-Tickets mithilfe von Perkol und Git-Issue | Technology-Gym in Filialen geschnitten werden

Verwenden Sie percol, um den Git-Commit-Hash-Wert in den Clip zu kopieren - Qiita

Git - Pull-Anfrage automatisch abschließen und auschecken - Qiita

peco

Ein selektives Interface-Tool, geschrieben in "Golang" basierend auf "Perkol".

https://github.com/lestrrat/peco

Die Einstellungsdatei kann wie folgt bearbeitet werden.

golang:~/.peco/config.json


{
    "Keymap": {
        "C-p": "peco.SelectPrevious",
        "C-n": "peco.SelectNext",
        "C-c": "peco.Cancel"
    }
}

Details werden in den folgenden Artikeln vorgestellt.

Befehl "peco", der die Windows-Eingabeaufforderung zehnmal komfortabler macht

Einführung von peco für zsh history-Goodbye Internet

Recommended Posts

Denken Sie an selektive Schnittstellen in der Befehlszeile
Erhalten Sie weiterhin RSS in der Befehlszeile
Sie suchen in der Befehlszeile nach commandlinefu
Arduino-Entwicklung über die Kommandozeile: vim + platformio
Über den Servicebefehl
Syntaxhervorhebung in der Befehlszeile mithilfe von Pylements
Konvertieren Sie XLSX in CSV in der Befehlszeile
Führen Sie Route53 in der Befehlszeile mit AWS-CLI aus.
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Denken Sie grob über die Verlustfunktion nach
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Abrufen, Testen und Senden von Testfällen im AtCoder-Wettbewerb über die Befehlszeile
Denken Sie grob über die Gradientenabstiegsmethode nach
Suchen Sie in der Befehlszeile nach dem Wi-Fi-Netzwerknamen (SSID) Ihres Mac
Einführung der SoftLayer-Befehlszeilenschnittstellenumgebung
Korrespondenznotiz, wenn die Richtungstaste nicht in der Python-Befehlszeile verwendet werden kann
Häufig verwendete (persönliche) Notizen für den Befehl tar
Meine Gedanken zur Python2.6-Befehlszeilen-App-Vorlage
[Python] Denken Sie ernsthaft über die M-1-Gewinnmethode nach.
Über den Test
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Über Go Interface
Über die Warteschlange
So erstellen Sie einen Artikel über die Befehlszeile
In Python sortieren. Lassen Sie uns als nächstes über den Algorithmus nachdenken.
Denken Sie an das Rack und WSGI der nächsten Generation
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Verschiedene Hinweise zur Bereitstellung der Django-App auf Heroku
Multiplizieren Sie PDF mit OCR in der Befehlszeile unter Linux (Ubuntu).
(Denken Sie schnell daran) Verwendung der LINUX-Befehlszeile