Nie ma to nic wspólnego z Vimem, wszystkie edytory zachowują się w ten sposób (w tym emacs), traktują znaki inne niż słowa jako ograniczniki. W każdym razie zachowanie, o którym mówisz, jest kontrolowane przez readline
a jego instrukcja zawiera kilka poleceń, do których można przypisać skróty. Wklejam tutaj kilka odpowiednich, ale polecam przeczytanie man readline
po więcej informacji:
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.
Tak więc chcesz backward-kill-word
, który używa znaków niealfanumerycznych jako granic słów. Domyślnie jest przypisany do Alt + Backspace ale możesz to zmienić, używając globalnego /etc/inputrc
jeśli chcesz, aby dotyczyły wszystkich użytkowników lub (lepiej) twojego lokalnego $HOME/.inputrc
.
O ile wiem, Ctrl + W wydaje się być zarezerwowany i nie możesz go użyć, ale możesz wybrać inny skrót, Ctrl + jot na przykład. Stwórz $HOME/.inputrc
plik, jeśli nie istnieje i dodaj do niego ten wiersz:
Control-J: backward-kill-word
To powinno wystarczyć dla większości nowoczesnych emulatorów terminali. Jednak niektóre starsze terminale używają różnych kodów. Jeśli używasz xterm
na przykład powyższy wiersz powinien być napisany jako:
C-J: backward-kill-word