Isso não tem nada a ver com o Vim, todos os editores se comportam dessa maneira (incluindo o emacs), eles tratam caracteres não-word como delimitadores. De qualquer forma, o comportamento do qual você está falando é controlado por readline
e seu manual lista alguns comandos aos quais você pode atribuir atalhos. Estou colando alguns relevantes aqui, mas recomendo que você leia man readline
para mais informações:
backward-word (M-b)
Move back to the start of the current or previous word. Words
are composed of alphanumeric characters (letters and digits).
kill-line (C-k)
Kill the text from point to the end of the line.
kill-word (M-d)
Kill from point the end of the current word, or if between
words, to the end of the next word. Word boundaries are the
same as those used by forward-word.
backward-kill-word (M-Rubout)
Kill the word behind point. Word boundaries are the same as
those used by backward-word.
unix-word-rubout (C-w)
Kill the word behind point, using white space as a word bound‐
ary. The killed text is saved on the kill-ring.
unix-filename-rubout
Kill the word behind point, using white space and the slash
character as the word boundaries. The killed text is saved on
the kill-ring.
Então, o que você quer é backward-kill-word
, que usa caracteres não alfanuméricos como limites de palavras. Por padrão, ele é atribuído a Alt + Backspace , mas você pode alterá-lo usando o% global/etc/inputrc
se quiser que eles se apliquem a todos os usuários ou (melhor) seu próprio local $HOME/.inputrc
.
Tanto quanto eu posso dizer, Ctrl + W parece ser reservado e você não pode usar esse, mas você pode escolher outro atalho, Ctrl + J por exemplo. Crie um arquivo $HOME/.inputrc
se ele não existir e adicione esta linha a ele:
Control-J: backward-kill-word
Isso deve ser suficiente para a maioria dos emuladores de terminal modernos. No entanto, alguns terminais mais antigos usam códigos diferentes. Se você estiver usando xterm
, por exemplo, a linha acima deve ser escrita como:
C-J: backward-kill-word