повторно использовать экземпляр vim из терминала linux - PullRequest
11 голосов
/ 16 июня 2009

Используя удаленную функцию в vim, можно ли повторно использовать экземпляр vim для загрузки нескольких файлов по мере необходимости.

Было бы неплохо иметь это средство в одном и том же терминальном экземпляре.

Мне больше нравится иметь интерфейс на основе вкладок, который доступен в vim 7+ Сценарий должен быть

  1. Открытый терминал
  2. vim file1.cpp
  3. Редактировать - Сохранить - Ctrl + Z, чтобы получить приглашение
  4. открыть другой файл
    • vim file2.cpp
  5. Теперь у нас есть file1.cpp и file2.cpp, открытые в одном и том же редакторе

Это возможно?!

Ответы [ 6 ]

6 голосов
/ 16 июня 2009

Я не уверен, что это можно сделать именно так, как вы указываете, но что-то очень похожее можно сделать с помощью сервера vim, работающего на вашем локальном компьютере.

Посмотрите на :help remote.txt в Vim.

Если ваша версия vim была скомпилирована с +clientserver, вы можете использовать vim для создания сервера vim, а затем выполнять на нем команды, например, открытие другого файла.
Переключатель --servername может создать новый сервер, а переключатель --remote может отправлять на него дополнительные команды или файлы.

1012 *, например *

vim --servername test file1.txt
vim --servername test --remote file2.txt

Я посмотрел, и у vim, который я использую в качестве стандарта на xubuntu на одном из моих компьютеров, его нет, но есть некоторые инструкции здесь , которые могут помочь, если у вас есть это скомпилировано. Если это не так, установка gvim и символических ссылок, по-видимому, является опцией (как это предусмотрено в gvim по умолчанию) или компиляцией двоичных файлов из исходного кода.

Edit:
Я больше играл с gvim, и это не представляется возможным сделать в терминале. Control-Z приостанавливает работу на уровне процесса. Я думал, что он может работать с экраном, но, кажется, не происходит никакого обмена, если gvim не запущен в графическом окне,

5 голосов
/ 21 июня 2009

Это легко сделать, если вы скомпилировали VIM с +clientserver, как Энди предложил в предыдущем ответе .

Я сделал следующее:

Я запустил VIM как сервер:

vim --servername abc

Я приостановил его с CTRL+Z и сделал:

vim --servername abc --remote ~/.cshrc
fg 

Теперь у VIM было ~/.cshrc открыто.

Тогда я сделал:

vim --servername abc --remote ~/.aliases
fg 

Теперь у VIM был один буфер с ~/.cshrc и другой с ~/.aliases.

Тогда я сделал:

vim --servername abc --remote-tab ~/foo_bar
fg 

А теперь у меня в VIM была одна вкладка с двумя предыдущими открытыми буферами и еще одна вкладка с ~/foo_bar открытым.

В случаях вызова VIM работал в терминале, а не в графическом интерфейсе.

3 голосов
/ 17 июня 2009

У меня есть пара предложений для вас, хотя ни то, ни другое не является тем, о чем вы говорите. Первый - NERD Tree , который предоставляет хороший древовидный файловый браузер для открытия других файлов. Очень кстати. Я также установил горячую клавишу (ctrl+o), чтобы открыть для меня Дерево NERD . Я храню псевдоним любого проекта, в котором я работаю, в ~/curr/trunk, так что это всегда работает для меня:

map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>

Еще одна вещь, которую я бы предложил, - покончить с Ctrl + Z. Это несколько неуклюже, и все, кого я знаю, кто использует этот метод, имеют тенденцию потеряться и в конечном итоге запустить 3 или 4 vim в фоновом режиме. Посмотрите, как открыть оболочку для себя. Я использую карту для; s для выполнения сценария оболочки:

map ;s :!~/.vim/shell.sh<CR>

Который выполняет:

#!/bin/sh
/usr/local/bin/bash -l;

У меня также есть немного магии в моем .profile, чтобы сделать очевидным, что я в VIM:

if [ "$VIMRUNTIME" != "" ] ; then
    export PS1="\u@\h \W \t$ vim> "
fi

</ 2 цента>

3 голосов
/ 16 июня 2009

Вы можете разделить текущий экран и открыть два (или более) файла следующим образом:

Для горизонтального разделения выполните:

:sp 'filename'

и для вертикального разделения выполните:

:vsp 'filename'

Для перехода между ними нажмите Ctrl + W, а затем используйте клавишу со стрелкой для перехода к любому файлу, который вы хотите редактировать.

Кроме того, если вы хотите просто переключать файлы (и открывать только один), вы можете сделать это:

:e 'filename'
2 голосов
/ 16 июня 2009

G'day,

Или, если вы хотите иметь несколько файлов, но одновременно использовать все окно vim для одного файла, вы можете просто ввести

:e 'filename'

, чтобы открыть новый файл. Вы можете сделать это несколько раз. Чтобы увидеть, что у вас в данный момент открыто, введите

:ls

Чтобы отскочить между открытыми вами файлами, вы можете использовать cntl- ^ (shift-cnt-6), и он будет чередоваться между основными и дополнительными файлами (отображаются с% и # в списке файлов)

Или вы можете ввести

:n b

где n - номер в начале нужного файла в списке, отображаемом командой 'ls'.

НТН

ура

1 голос
/ 16 июня 2009

Вы можете установить функцию hidden в vim, чтобы разрешить открывать несколько файлов:

:set hidden

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

:e 'filename'

У вас есть несколько команд для навигации по буферам:

:bnext
:bprev
:buffers

Конечно, как упомянул samoz, вы можете разделить экран, чтобы увидеть несколько буферов в одном окне.

Я бы посоветовал прочитать это для хорошего знакомства с vim, это сэкономит вам много времени.

Удачи!

...