Вопрос Как скопировать содержимое в редакторе vi


Я попытался использовать Ctrl + В для вставки содержимого в документ редактора vi, но Ctrl + В не интерпретируется как паста.


115
2018-02-16 08:13


происхождения


Просто примечание, основная причина использования Vi заключается в том, что Vim не установлен. Если у вас установлен Vim, скорее всего стоит использовать это. У Vi нет особого преимущества, кроме того, что он уже присутствует в каждой установке Unix. Лучший способ узнать Vim, на мой взгляд, - открыть эмулятор терминала (не изнутри Vim) и тип vimtutor Это позволит вам быстро добираться до того места, где вы можете использовать его примерно за 45 минут. - Ben Mordecai
+1 @BenMordecai - я уже был знаком с vi (от старого), включая его удобную возможность для оболочки, но нуждался в этом обновлении. Отличный репетитор. Прошел через это как ветер. Благодарю. - Cbhihe


ответы:


Во-первых, убедитесь, что вы находитесь в режиме редактирования (нажмите я). Затем вы можете вставить Ctrl+сдвиг+В, если вы используете эмулятор терминала, например gnome-terminal (или выберите «Вставить» из контекстного меню).

Вы также можете ввести :set paste в vim перед вставкой, чтобы отключить автоматическое отступы и т. д. Затем :set nopaste после того, как вы вставили содержимое.

Также проверьте этот вопрос на stackoverflow.com для получения дополнительной информации.

Если вы хотите скопировать / вставить строки в vim (в отличие от вставки содержимого буфера обмена), вы захотите проверить дергать команда. Вот чит-лист это может помочь.


138
2018-02-16 08:27



Я думаю, что если у вас есть указатель мыши, вы не можете вставить его с помощью Ctrl + Shift + V. - Alvin Wong
Просто примечание, I чувствителен к регистру. В нижнем регистре i является обычным способом входа в режим вставки. Столица I приводит курсор к началу строки, а затем переходит в режим вставки. - Ben Mordecai


Vi (и Vim) работает по-разному по сравнению с обычным текстовым редактором, таким как Gedit. Он также имеет довольно крутую кривую обучения. Если вы хотите изучить некоторые основные команды, начните с этот интерактивный учебник,

Однако, чтобы ответить на ваш вопрос. Доступ к содержимому системного буфера обмена возможен через регистр плюса. Поэтому, чтобы вставить что-то из системного буфера обмена из нормального режима, нажмите: «+ Р (Не в то же время, но один за другим).


52
2018-02-16 08:34



Этого я до сих пор не знал. Кроме того, +1 для связывания еще одного удивительного учебника vim. - Attila O.
Говоря об учебных кривых для редакторов, есть «классические кривые обучения для некоторых обычных редакторов», blog.thilelli.net/public/store/attached/curves.jpg, - hlovdal
В терминале GNOME короткие сокращения для копирования и вставки - это Ctrl-Shift-C и Ctrl-Shift-V, соответственно. - Flimm
Я попытался нажать поочередно <kbd> "</ kbd>, <kbd> + </ kbd> и <kbd> p </ kbd>, также <kbd>" </ kbd> и <kbd> p < / kbd> и ничего не произошло. Что я сделал не так? я использую vi не vim - user907860
Это правильный ответ. Использование, например. Ctrl-Shift-v будет работать только с самым простым содержимым (разрывы строк и отступы могут стать действительно неправильными, если вы находитесь в терминале, и вы забыли использовать set :paste). - rsenna


  1. Если вы хотите скопировать содержимое пасты в том же файле, используйте yank а также paste,

  2. Если вы хотите скопировать содержимое пасты через терминалы, откройте первый файл, извлекая нужный текст, затем откройте второй файл в vim (например, :tabnew /path/to/second/file) и нажмите p чтобы вставить его.

  3. Если вы хотите скопировать содержимое пасты от vim до внешней программы, вам необходимо получить доступ к системному буферу. Я предполагаю, что вы используете Ubuntu. В GUI-версии vim всегда есть поддержка буфера обмена, однако, если вы хотите использовать Vim с терминала, вам нужно будет проверить поддержку X11-буфера обмена.

    На консоли введите:

    $ vim --version | grep xterm
    

    Если ты найдешь -xterm_clipboard, у вас есть два варианта:

    1) Скомпилируйте vim самостоятельно, с флагом xterm_clipboard

    2) Удалите vim, установите Gvim (vim-gtk или vim-gnome). Вы можете придерживаться non-gui vim, вызывая vim из терминала, так же, как и раньше. На этот раз, когда вы проверите, вы должны найти + xterm_clipborad,

    Теперь, когда вы держите некоторый текст в регистре + внутри своего редактора vim (например, «+ yy»), он также копируется в системный буфер обмена, который вы можете получить из своей внешней программы, например, gedit editor, используя Ctrl+В,

  4. Если вы хотите скопировать содержимое пасты от внешней программы до vim, сначала скопируйте текст в системный буфер обмена через Ctrl+С, затем в редакторе vim режим вставки, нажмите средняя кнопка мыши (обычно колесо) или нажмите Ctrl+сдвиг+В вставить.

    Это 4 основных копировать вставить условия, связанные с vim. Надеюсь, это поможет.


23
2018-02-20 05:53



В чем смысл: tabnew / path / to / second / file? Вы можете достичь той же самой вещи, которая дергается / копируется / вырезается в первом файле, открывая второй файл с помощью: vi / path / to / second / file и вставки (p / P) в нем. По крайней мере, в моем случае ... Или это потому, что у меня включена функция vim + xterm_clipboard? Или есть больше, чем табуляция? - Cbhihe
На Ubuntu vim-gtk имеет xterm_clipboard поддержки и на Fedora xvim есть это. - icc97


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

(Это также является причиной того, что я никогда не получаю ноутбук, на котором вы не можете нажать Вставить без нажатия вторичного ключа)


15
2018-02-17 16:59



Vi/Vim ! = terminal;) - 0xC0000022L
хорошо, но все равно работает :) - Magnus Jonsson
+1 для этого .. Что вы используете для произнесения Ctrl+A,Ctrl+C также ? - Arup Rakshit
Если я использую терминал внутри DE, я обычно просто выбираю текст с помощью мыши и копирую с помощью Ctrl + Shift + C. - Magnus Jonsson
Shift + Insert также работает в gvim. (Я запускаю Ubuntu 13.10, если это имеет значение.) - eksortso


Использовать центральная кнопка мыши для вставки текста, который вы выделили в другом месте.

Это полезно, когда у вас нет доступа к вашему системному буферу (например, в удаленной сессии SSH).

Должен быть в режиме редактирования / вставки для Vim.


10
2018-02-16 16:09





Когда вы введете vi, нажмите i чтобы войти в режим вставки, щелкните правой кнопкой мыши на терминал, нажмите «Вставить».


5
2018-02-17 06:34



Я думал, был в нижнем регистре i, Что такое верхний регистр I делать? - Flimm
@Flimm, о чем уже было сказано в комментарии Бен Мордекая в другом ответе. - sierrasdetandil
Я отредактировал ответ на нижний регистр i, Верхний регистр I переводит курсор в начало строки перед входом в режим вставки, который здесь не нужен. - Flimm


Подробные инструкции по копированию / вставке строк текста в vi с помощью yank а также put

(используйте следующее в командный режим vi)

Копия (YANK)

Чтобы скопировать одну строку в vi:

  • В командном режиме переместите курсор на строку, которую нужно скопировать, и введите yy или типа Y

Чтобы скопировать 2 строки в vi:

  • В командном режиме переместите курсор в первую строку, которую нужно скопировать, и введите 2yy или типа 2Y

(аналогично, любое количество строк может быть скопировано)

Чтобы скопировать все строки из текущего местоположения в конец файла:

  • В командном режиме переместите курсор в первую строку, которую нужно скопировать, и введите yG

Чтобы скопировать весь текст из текущего местоположения в конец текущего слова:

  • В командном режиме переместите курсор в место, где текст нужно скопировать и введите yw

Чтобы скопировать весь текст из текущего местоположения в конец строки:

  • В командном режиме переместите курсор в место, где текст нужно скопировать и введите y$

Вставить (PUT)

Чтобы вставить текст в буфер обмена - после расположение курсора:

  • В командном режиме введите p

Чтобы вставить текст в буфер обмена - до расположение курсора:

  • В командном режиме введите P

3
2017-11-03 21:43