L'interface sélective ici est un outil de type Anything dans Emacs. Il sera plus facile de comprendre ce point en regardant l'image.
Ces outils ont une variété d'applications.
L'interface sélective vous permet de sélectionner le résultat de sortie en vous connectant à un tuyau. Et celui sélectionné sera finalement sorti.
Vous pouvez utiliser cette sortie pour médier divers outils et obtenir des valeurs.
percol
Un outil d'interface sélective écrit en python
.
https://github.com/mooz/percol
python
$ sudo pip install percol
Ou
python
$ git clone https://github.com/mooz/percol
$ cd !$:t
$ sudo python setup.py install
python
$ ls | percol
Correspond à une chaîne spécifique depuis le début.
python
$ ls ~ | percol --query="s"
Personnalisez le côté gauche de l'invite.
python
$ ls | percol --right-prompt=prompt1
Avec percol, vous pouvez également définir des raccourcis clavier en créant un fichier de paramètres.
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 /Invite selon la méthode de correspondance
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
#Changer le chemin du dictionnaire sur Mac et 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
#Partagez kill (yank) avec le presse-papiers sur 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
#Faire fonctionner la suppression (retour arrière) sur Mac
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)
})
référence: Super pratique si vous mettez du percol et le combinez avec zsh
J'ai essayé la version terminale de quelque chose comme percol au lieu de zaw
Si vous voulez sélectionner plusieurs lignes, utilisez percol.command.toggle_mark_and_next ()
. Par défaut, il semble être réglé sur «C-S».
python
$ ps ax | percol | awk '{ print $1 }' | xargs kill
Dans mon cas, j'écris le fichier de configuration suivant. Marque multi-lignes et annulation de marque.
python:~/.percol.d/rc.py
"C-n" : lambda percol: percol.command.toggle_mark_and_next(),
"C-p" : lambda percol: percol.command.unmark_all(),
Vous pouvez également définir le délimiteur avec la commande suivante.
python
$ ls | percol | tr '\n' ';'
Lors du clonage depuis GitHub, il semble qu'il soit préparé depuis le début.
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
Si cdr est créé, il semble que vous puissiez facilement vous déplacer par la méthode suivante.
~/.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
Autre que cela, cliquez ici.
~/.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
référence:
J'ai écrit un gars qui a enregistré des CD dans le répertoire où je suis allé récemment avec percol
Migrer du saut automatique vers le saut de répertoire basé sur percol | Web Scratch
Rend votre structure de répertoires plus facile à utiliser.
python
$ go get github.com/motemen/ghq
Les détails sont présentés dans les articles suivants.
Gestion unifiée et efficace des dépôts locaux à l'aide de ghq --delirious pensées
Percol est également très utile pour rendre la commande git plus facile à utiliser.
Les détails sont présentés dans les articles suivants.
Utilisez percol pour copier la valeur de hachage de git commit dans le clip - Qiita
Git - Compléter automatiquement la demande d'extraction et vérifier --Qiita
peco
Un outil d'interface sélective écrit en «golang» basé sur «percol».
https://github.com/lestrrat/peco
Le fichier de réglage peut être édité comme suit.
golang:~/.peco/config.json
{
"Keymap": {
"C-p": "peco.SelectPrevious",
"C-n": "peco.SelectNext",
"C-c": "peco.Cancel"
}
}
Les détails sont présentés dans les articles suivants.
Commande "peco" qui rend l'invite de commande Windows 10 fois plus pratique
Introduction de peco à utiliser pour zsh history-Goodbye Internet
Recommended Posts