Терминал Ubuntu - перейдите на позицию курсора мыши

Создать пространство подкачки:

sudo dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 
    (# bs*count = file size)

sudo mkswap /tmp/swapfile

sudo chmod 600 /tmp/swapfile
    (# for security reasons)

sudo swapon /tmp/swapfile

free -h

Удалить:

swapoff /tmp/swapfile

rm -f /tmp/swapfile
1
19.08.2017, 16:21
4 ответа

Оберните его в простой сценарий оболочки и используйте переменные оболочки для параметров, которые вы хотите настроить:

#!/bin/sh

param_c=340

./myprogram 1 2 "$param_c" \
            4 5 6 7
1
27.01.2020, 23:16

Кажется, вы используете bash, поэтому вы можете использовать функцию readline, которая устанавливает переменную READLINE_POINT, которая является положение текстового курсора, в нужный столбец. Дешевый способ найти столбец состоит в том, чтобы выделить (мышью) весь текст от начала строки до нужной позиции и использовать xsel, чтобы прочитать этот выбор.

Например, чтобы попробовать, привяжите символ ! в функцию gotocolumn:

$ bind '-x "!":gotocolumn' 
$ gotocolumn(){ local x=$(xsel);READLINE_POINT=${#x}; }

Вызовите длинную строку, выберите несколько символов в начале, введите ! и курсор перемещается.


Я только что заметил, что перемещение текстового курсора в положение мыши на самом деле встроено в xtermс функцией readline-buttonи просто требует подходящей привязки. Например, запустите

xterm -xrm 'XTerm.VT100.translations:  #override\
 Mod4 <Btn1Down>: readline-button()\n'

, затем, когда вы щелкнете левой кнопкой мыши с клавишей Meta (или Super) над символом в строке ввода, xterm генерирует левую или правую клавишу до тех пор, пока курсор не выровняется.

Точно так же urxvtимеет встроенное расширение perl (см. man urxvt-readline), включенное по умолчанию, с привязкой Shift и левой кнопки.

1
27.01.2020, 23:16

Есть несколько способов сделать то, что вы хотите.

Интерактивный режим

Современные (и самые популярные) оболочки, такие как bash и zsh, используют GNU readline в качестве входной библиотеки. См. man 3 readline, раздел Редактирование команд. Есть два режима: emacs и vi.

Стиль Emacs

set -o emacs

Ответ @sebasth охватывает эту часть.

CTRL+ P(или UP): Последняя команда

ALT+ B: Слово назад

ALT + F: Слово вперед

ALT+ D: Удалить следующее слово

ALT+ Backspace: Удалить предыдущее слово

CTRL+ A: начало строки

CTRL+ E: конец строки

стиль Vi

set -o vi

Нажмите Iдля перехода в режим вставки и ESCдля перехода в командный режим. Перейдите в командный режим и затем:

K: Последняя команда

B: Слово назад

W: Слово вперед

DW: Удалить следующее слово

] DB: Удалить предыдущее слово

0: Начало строки

$: Конец строки

Используя внешний редактор

fcвставит ваше последняя команда (вы также можете указать другую команду в своей истории) в вашем любимом редакторе (см. переменную $EDITOR). Команда будет запущена при выходе из редактора.

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

Изменить только 1 параметр

Использование ^before^afterпозволяет заменить строку дона после.

Например:

abitbol@localhost $ echo 1 2 3 4 5 6 7 
1 2 3 4 5 6 7

abitbol@localhost $ ^3^42
echo 1 2 42 4 5 6 7 
1 2 42 4 5 6 7
3
27.01.2020, 23:16

В оболочке можно перемещать слово за раз:Alt + B перемещает курсор на одно слово назад, Alt + F перемещает на одно слово слово вперед. Alt + D удаляет слово после курсора. Дополнительные комбинации горячих клавиш для bashописаны в руководстве .

3
27.01.2020, 23:16

Теги

Похожие вопросы