Eu tenho um zle como:
function _ctrl-shift-left() {
((REGION_ACTIVE)) || zle set-mark-command # Selection
zle backward-word
}
zle -N _ctrl-shift-left
bindkey '^[[1;6D' _ctrl-shift-left # Ctrl+Shift+Left to select till the beginning of the previous word.
Por exemplo, para o comando abaixo
$ curl -s "https://samplesite.com/101146/07/data-processing/13/?#/101146-132519042909.html" | grep -oP 'https://dl\d*\.samplesite\.com/Files/[^"]+\.rar' | sed 's/\?nocache=[^&]*//g'
quando pressiono ctrl-shift-left, quero parar o cursor em '
e "
.
Como posso fazer isso?
Por padrão, para
backward-word
todos os widgets de movimento/ação de palavras, as palavras são caracteres alfanuméricos mais os caracteres em$WORDCHARS
(semelhante ao$wordchars
do tcsh), mas você também pode usar aselect-word-style
função autocarregável para alterar essa definição de palavra.Mudará a definição da palavra :
Então em seu
backward-word
levará você aos lugares marcados⇑
acima.Não é exatamente isso que você está pedindo, pois não vai parar na
"
entrada[^"]
, mas suspeito que seja isso que você realmente quer.Também é possível criar um widget a partir dessa
select-word-style
função e vinculá-lo a alguma combinação de teclas para selecionar o estilo da palavra interativamente:Então, pressionar Alt+ zmostrará este prompt:
Com mais detalhes:
Alternativamente, você pode especificar que o
shell
estilo de palavra deve ser usado no contexto do seu_ctrl-shift-left
widget zle com:Ou talvez mais próximo do que você está perguntando:
Que salta para
'
e"
somente caracteres.OP aqui. Enquanto isso, criei uma solução usando Como fazer com que os comandos do zsh no estilo vi respeitem WORDCHARS?
O código é fornecido abaixo: