Удаление ввода вперед в следующее пространство

3

В терминале я могу использовать Ctrl + w для удаления целого слова или IP ( . - разделитель для каждого октета) при движении влево от приглашения. Однако, если я попробую Alt + d , чтобы перейти вправо от подсказки, терминал распознает «.». в IP для разделителя и удаляет только один фрагмент, до . от всего IP.

Как я могу настроить так, чтобы терминал распознавал только пробелы для разделителя слова или даже лучше имел другой ярлык для разных разделителей: . , = , , и т. д.

Это очень похоже на маневрирование в терминале с помощью Ctrl + Arrows (слева и справа), и поведение похоже на то, что установлено для разделителя слов.

Я читал, что редактор Emacs сидит за тем, что использует терминал, чтобы использовать эти ярлыки, но я не мог его обмануть.

    
задан Lacho 24.01.2015 в 22:44
источник

1 ответ

5

Сначала используйте команду в своем терминале:

bind '"\ew": vi-forward-bigword'

, чтобы создать новый ярлык-ключ - Alt + w в этом случае, который переместит приглашение вперед в конец текущего или следующего слова. В этом случае слова ( bigwords ) состоят из букв, цифр и специальных символов, таких как «.».

Теперь вы можете использовать Alt + w , а затем Ctrl + w , чтобы выполнить то, что вы пожелаете.

См. дополнительную информацию в моем ответе здесь .

Кроме того, после того, как я просмотрел этот Q & amp; A , я понял следующее:

  

С bind вы можете привязать ключи к одной из трех вещей, , но нет   их сочетание :

     
  • Выполнить команду readline: bind '"key": command'
  •   
  • Выполнить последовательность нажатий клавиш: bind '"key":"keystrokes"'
  •   
  • Выполнить команду оболочки: bind -x '"key": shell-command'
  •   

Итак, теперь, если вы хотите объединить эти два нажатия клавиш ( Alt + w , а затем Ctrl + w ) в новом, вам нужно будет привязать новое нажатие клавиши (в моем примере Alt + q ), чтобы выполнить предыдущие нажатия клавиш, как показано ниже:

bind '"\eq": "\ew \C-w"'

Наконец, чтобы сделать эти изменения навсегда, все, что вам нужно сделать, это добавить следующие строки в ваш файл ~/.inputrc (если у вас его нет, а затем создайте его):

"\ew": vi-forward-bigword
"\eq": "\ew \C-w"
    
ответ дан Radu Rădeanu 24.01.2015 в 23:52
источник