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
python
$ sudo pip install percol
Oder
python
$ git clone https://github.com/mooz/percol
$ cd !$:t
$ sudo python setup.py install
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
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
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' ';'
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
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
Migration vom automatischen Sprung zum perkolbasierten Verzeichnissprung | Web Scratch
Erleichtert die Verwendung Ihrer Verzeichnisstruktur.
python
$ go get github.com/motemen/ghq
Details werden in den folgenden Artikeln vorgestellt.
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
Percol ist auch sehr nützlich, um die Verwendung des Befehls git zu vereinfachen.
Details werden in den folgenden Artikeln vorgestellt.
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