Вставка копии для энергии не работает когда мышь (: набор mouse=a), идет?

Я не знаю, почему Ваши примеры не работают. Они работают здесь---, если я использую выражение шарика, которое соответствует любым файлам. Обратите внимание, что, если какое-либо из соответствий могло бы быть каталогом, и Вы не хотите перечислять содержание того каталога, необходимо добавить a -d отметьте к Вашему ls.

Необходимо не упустить то, что происходит, когда выражение шарика не соответствует никаким файлам. Bash имеет установку, можно включить с shopt -s failglob это дает ошибку в этом случае. В других оболочках, или когда эта опция не будет включена в ударе, Вы вместо этого получите само выражение шарика, как произведено. Если Вы просто делаете a echo nonmatching_expression* Вы будете видеть результат "nonmatching_expression*". Если Вы делаете ls nonmatching_expression*, ls должен бросить ошибку.

Как записано, обе из Ваших опций предполагают, что имена файлов не содержат пробела. Это из-за ls -l ... | awk '{print $9}'. Если Вы знаете, что Ваши имена файлов не содержат пробела, это прекрасно. (Но почему Вы используете ls -l ... | awk '{print $9}' вместо просто ls? Я предполагаю, что у Вас есть некоторая причина не декларация в вышеупомянутых примерах.)

Если Ваши имена файлов могли бы содержать новые строки, вещами будет существенно более твердый---, в который я не войду, что сделать в этом случае. Если они не будут содержать новые строки, но могли бы содержать другой пробел, то Вы могли опустить -l флаг на ls и опустите канал к awk. Затем Ваша первая опция сохранила бы во временный файл одно имя файла на строку. Те имена файлов могли содержать пробелы или вкладки (но не новые строки). Ваша вторая опция также сохранила бы одно имя файла на строку в переменную, однако они будут более тверды работать с.

Если Вы сохранили список имени файла к переменной, и имена файлов могли бы содержать некоторый пробел, то, несомненно, всегда необходимо будет заключить переменную в кавычки при расширении его: так использование echo "$filelist" нет echo $filelist.

Вот то, как я извлек бы данные:

Опция 1:

while IFS= read -r f; do
  do_stuff_with "$f"
done < tempo

Опция 2:

while IFS= read -r f; do
  do_stuff_with "$f"
done << EOF
$filelist
EOF

Эти методы разрешают Вам выполнять операции в цикле (изменяющий переменные, изменяя каталоги), который будет видим к остальной части сценария. Если Вы не заботитесь об этом, то Вы можете вместо этого иметь while ... done раздел в конвейере, например, как это:

echo "$filelist" | while IFS= read -r f; do
  do_stuff_with "$f"
done

В этом случае, целое while ... done конструкция выполняется в подоболочке и любых модификациях к переменным (включая цикличное выполнение f) только будет видимо в той подоболочке.

Bash и некоторые другие оболочки имеют переменные типа массив. Некоторые люди находят их легче работать с тем, когда имена файлов могли бы содержать пробел. Однако они являются менее портативными. И они не могут быть экспортированы. (Вы отметили свой вопрос как /environment-variables, чтобы мне подразумевает, что переменные будут экспортироваться. Но возможно Вы не имели в виду это тот путь.) Я не войду, как Вы могли бы достичь своих целей с переменными типа массив.

Если Вы знаете, что у Вас нет пробела в Ваших именах файлов, то является самым простым использовать Вашу опцию 2, и можно использовать этот метод:

for f in $filenames; do
    do_stuff_with $f
done

Здесь кавычки должны быть опущены вокруг $filenames и являются дополнительными вокруг $f.

54
19.08.2017, 22:14
10 ответов

mouse=a предотвращает возможность копирования и вставки из vim с читаемыми символами.

Измените mouse=a на mouse=r, и это должно устранить проблему.

Меняет ли вы конфигурационный файл для вашего vim с помощью мыши, установленной в mouse=a?

ориентальный ответ ^

Если mouse=r не все параметры копирования в прошлом, измените его на mouse=v

Обе mouse=r и mouse=v имеют те же самые функции, которые вам нужны, но в зависимости от используемого вами vimrc одна из них будет работать лучше, чем другая.

70
27.01.2020, 19:33

Что касается второй части вопроса, в которой указано, что при вставке из других приложений в vim добавляются закладки/пробелы. Попробуйте добавить это в ~/.vimrc. готовая паста или вживую перед вклеиванием в обычном режиме нажать "shift" + ":" и напечатать "set paste"

.
0
27.01.2020, 19:33

См.: http: //vimdoc.sourceforge. Net / htmldoc / options.html

Посмотрите на раздел «Примечание» в нижней части ссылки:
При включении мыши кнопки мыши все еще могут использоваться, сохраняя нажатую клавишу Shift. Это включает в себя копию пасты с помощью кнопок мыши.

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.
4
27.01.2020, 19:33

От https://ключ 'изменения' Прессы stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled/4608387

, выбирая с мышью. Это приведет к тому, что выбор мыши будет вести себя так, как если бы мышь = a не была включена.

Это работает и было подтверждено рецензентами стека-переполнения, которые приняли это как ответ:)

8
27.01.2020, 19:33

Решение Bharath , нажатие Shift При копировании, сделаем Это, но он скопирует больше, чем вы хотели бы скопировать в случае нумерации или хеш-комментариев.

Один из способов сделать это даже с Мышь = A используется визуальный режим, нажав V для одного курсора или Shift + V ] Для полной линии выделите, и вы можете двигаться вверх или вниз со стрелками и использовать y для копирования или D , чтобы вырезать, и это должно работать.

6
27.01.2020, 19:33

Для пользователей OS X: Чтобы скопировать вставку с помощью mouse = a , используйте alt вместо Shift , чтобы выделить текст. Тогда cmd-c и cmd-v работают должным образом.

Нашел этот ответ здесь https://stackoverflow.com/a/4608387/671639 после долгого поиска в Google.

22
27.01.2020, 19:33

Используйте эти две строки ниже в вашем ~/.vimrc, чтобы использовать все приятные функции gui-mouseи вставьте в системный буфер обмена, используяy(клавишу рывка ), если вам действительно не нужны дополнительные буферы буфера обмена :

. ]
set mouse=a
set clipboard=unnamed
3
27.01.2020, 19:33

Вы можете использовать y для копирования (yank )и p для вставки, даже если :set mouse=aустановлено в ~/.vimrc. Используйте v + arrow keys, чтобы выделить текст. Чтобы быстро скопировать всю строку, используйте shift + y .

1
27.01.2020, 19:33

На моем Mac мне помогли эти две вещи:

  • :установить мышь -=a
  • fn+щелчок (вместо Shift или Alt)
2
27.01.2020, 19:33

Две вещи, которые нужно добавить:

  1. Имейте в виду, что часто set mouse=vне будет работать должным образом в зависимости от других директив, которые вы установили до или после в файле .vimrc, это также зависит от того, с какого терминала вы запускаете vim;
  2. Я бы рекомендовал оставить mouse=a, чтобы у вас одновременно были включены все режимы мыши, и использовать трюк, предложенный @BHS, чтобы выделять текст, нажимая клавишу Shift, когда вам нужно вставить выделенный текст, используя средний кнопка мыши(Копирование текста вне Vim с включенным set mouse=a).
0
27.01.2020, 19:33

Теги

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