Зазвичай термінали дозволяють вибирати текст за допомогою миші, але оболонка про це не усвідомлює. Так , до жаль , ні bash
, zsh
, fish
ні es
підтримує редагування миші основі. Я думаю, щоб це зробити, їм потрібно було б взяти під контроль більше терміналу.
Однак (і це є трохи розтягнути) , якщо відкрити Вім або GVim, а потім ввести команди оболонки з допомогою:
:!...
то ви можете клацнути мишкою, щоб перейти до будь-якої точки лінії . (Вам потрібно :set mouse=a
спочатку, якщо це ще не включено.) Клавіші редагування в цьому режимі можна побачити за допомогою:help cmdline-editing
Vim також має досить потужний режим історії команд, до якого можна дійти, натиснувши q:. Звідти можна витягувати, видаляти та вставляти за допомогою команд Vim у звичайному режимі. У цьому режимі ви можете отримати вибрану мишкою, а потім видалити потрібну вам функцію (натиснувши d).
Важливим застереженням є те, що Vim насправді не підтримує сеанс роботи оболонки. Кожна команда, яку ви виконуєте, буде виконуватися в дочірньому процесі. Тож будь-які зміни, внесені дочірнім процесом змінних оточуючих середовищ або параметрів оболонки, будуть втрачені.
З огляду на це, ви можете змінювати змінні середовища в процесі Vim та використовувати їх з командного рядка Vim, і вони навіть будуть експортовані в дочірні процеси:
:let $FOO="bar" " the $ and the quotes are mandatory here
:echo $FOO " Vim's own echo command
bar
:!echo "$FOO" " Passing the variable to a shell command
bar
:!bash " Opening a child shell
$ echo "$FOO"
bar
Тож якщо ви готові зробити вигляд, що Vim насправді є якоюсь дивною оболонкою, то ви можете насолоджуватися її передовими можливостями редагування! Напевно, найбільшим недоліком є те, що вам доведеться починати кожну команду, набравши :!
абоq:
Ну, і до речі, якщо ви хочете отримати вихід команди оболонки у ваш поточний буфер Vim, ви можете зробити це так (але будьте обережні, що він скоротить ваш поточний рядок):
:,!ls