Переключение между файлами без закрытия редактора vim [duplicate]

Ниже приведен пример передачи параметров в документ fxml через пространство имен.

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<VBox xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1">
    <BorderPane>
        <center>
            <Label text="$labelText"/>
        </center>
    </BorderPane>
</VBox>

Определить значение External Text для переменной пространства имен labelText:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class NamespaceParameterExampleApplication extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws IOException {
        final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("namespace-parameter-example.fxml"));

        fxmlLoader.getNamespace()
                  .put("labelText", "External Text");

        final Parent root = fxmlLoader.load();

        primaryStage.setTitle("Namespace Parameter Example");
        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }
}
992
задан ib. 1 August 2011 в 04:23
поделиться

28 ответов

Почему бы не использовать вкладки (введенные в Vim 7)? Вы можете переключаться между вкладками с :tabn и :tabp, с помощью :tabe <filepath> вы можете добавить новую вкладку; и с помощью регулярных :q или :wq вы закроете вкладку. Если вы сопоставляете :tabn и :tabp с клавишами F7 / F8, вы можете легко переключаться между файлами.

Если таких файлов не так много или у вас нет Vim 7, вы также можете разделить свои экран в нескольких файлах: :sp <filepath>. Затем вы можете переключаться между splitscreens с помощью Ctrl + W, а затем клавиши со стрелкой в ​​направлении, которое вы хотите переместить (или вместо клавиш со стрелками, w для следующего и W для предыдущего экрана splitscreen)

1060
ответ дан Shahbaz 18 August 2018 в 17:50
поделиться
  • 1
    Чтобы сохранить и закрыть вкладку, вы также можете использовать ZZ вместо :wq (точно так же, как обычно сохранить и закрыть) – Andreas Grech 5 May 2010 в 15:34
  • 2
    Я использую пакет vim-gnome в Ubuntu 10.10, и я могу переключаться между вкладками, используя Ctrl + PageUp и Ctrl + PageDown. Мне не нужно ничего настраивать; он был дефолтом. – Joey Adams 1 October 2011 в 03:14
  • 3
    Кроме того, в режиме редактирования gt переходит к следующей вкладке, а gT переходит на предыдущую вкладку. – Dean 9 December 2011 в 00:07
  • 4
    Вы можете перейти на любую вкладку, используя ngt, где n - индекс вкладки (начиная с одного). Я думаю, что есть опция, которая отображает индекс каждой вкладки рядом с именем файла, но я не знаю, что это такое. Если кто-нибудь знает, я бы хотел это услышать. – void-pointer 13 January 2012 в 04:57
  • 5
    Также обратите внимание, что вы можете использовать флаг -p для открытия нескольких файлов в закладках из командной строки. Например, gvim -p main.pl maintenance.pl откроет эти два файла на вкладках. – Matthew Strawbridge 25 November 2012 в 12:06

Некоторые ответы в этой теме предлагают использовать вкладки, а другие предлагают использовать буфер для выполнения того же самого. Вкладки и буферы разные. Я настоятельно рекомендую вам прочитать эту статью Сумасшествие Vim Tab - Буферы против вкладок Вот хорошая сводка, которую я вытащил из статьи: Резюме:

  • Буфер - это память текст файла.
  • Окно - это окно просмотра в буфере.
  • Закладка - это коллекция окон.
15
ответ дан Andrew 18 August 2018 в 17:50
поделиться

Я использую команды буфера - :bn (следующий буфер), :bp (предыдущий буфер) :buffers (список открытых буферов) :b<n> (открыть буфер n) :bd (удалить буфер). :e <filename> просто откроется в новый буфер.

45
ответ дан Andy Whitfield 18 August 2018 в 17:50
поделиться

Я использую несколько буферов, которые скрыты в моем файле ~/.vimrc.

Скрипт проводника мини-буфера тоже хорош, чтобы получить хороший компактный список ваших буферов. Затем :b1 или :b2 ... чтобы перейти в соответствующий буфер или использовать проводник мини-буфера и выполнить вкладку через буферы.

36
ответ дан Arslan Ali 18 August 2018 в 17:50
поделиться
  • 1
    350 файлов !!! Это впечатляет. как вы находите правильный буфер для перехода? Вы когда-нибудь делаете расколы? – Brian O'Dell 7 April 2014 в 15:48
  • 2
    Приятно видеть в стороне соответствующую информацию, например% и #. +1 – Ashish Ojha 4 March 2015 в 11:56
  • 3
    @ BrianO'Dell :b <partial filename><tab> plus set wildmenu в вашем .vimrc хорошо работает, когда вы открыли тонны буферов. Затем вы просто частичный матч и прокрутите те, которые он находит. В других приличных редакторах у вас есть нечеткое обнаружение, но обычно вы не можете ограничить это нечеткое обнаружение только файлами, которые вы открыли. – icc97 1 September 2017 в 09:36

, если вы используете osx и хотите, чтобы вы могли нажимать на ваши вкладки, используйте MouseTerm и SIMBL (взятые из здесь ). Кроме того, проверьте это обсуждение .

1
ответ дан Community 18 August 2018 в 17:50
поделиться

Чтобы добавить в список args:

:argadd

Чтобы удалить из списка args:

:argdelete

В вашем примере вы можете использовать :argedit test.pl добавить test.pl в список args и отредактировать файл за один шаг.

:help args дает намного больше деталей и расширенного использования

96
ответ дан Dan Lowe 18 August 2018 в 17:50
поделиться
  • 1
    Это действительно ответ на заданный вопрос, хотя, учитывая название, другие ответы совершенно справедливы. – Soren Bjornstad 24 April 2016 в 16:39

Большинство ответов в этом потоке используют простые команды vim, которые, конечно, прекрасны, но я думал, что предоставил бы исчерпывающий ответ, используя комбинацию плагинов и функций, которые я нахожу особенно полезными (по крайней мере некоторые из этих советов пришли из Советы по навигации по файлам Gary Bernhardt ):

  1. Для переключения между двумя последними файлами дважды нажмите <leader>. Я рекомендую назначить <leader> пробелу:
    nnoremap <leader><leader> <c-^>
    
  2. Для быстрого перемещения по проекту ответ является нечетким согласующим решением, таким как CtrlP . Я привязываю его к <leader>a для быстрого доступа.
  3. В случае, когда я хочу видеть визуальное представление открытых в настоящее время буферов, я использую плагин BufExplorer . Простой, но эффективный.
  4. Если я хочу просматривать файловую систему, я бы использовал командную строку или внешнюю утилиту (Quicklsilver, Afred и т. Д.), Но посмотрел на текущую структуру проекта NERD Tree - классика. Не используйте это, хотя вместо 2 в качестве основного метода поиска файлов. Это действительно замедлит вас. Я использую привязку <leader>ff.

Этого должно быть достаточно для поиска и открытия файлов. Оттуда, конечно, используйте горизонтальные и вертикальные расщепления. Что касается расколов, я считаю, что эти функции особенно полезны:

  1. Откройте новые расщепления в меньших областях, когда не хватает места и расширяйте их при навигации. Обратитесь к здесь за комментариями о том, что они делают точно:
    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. С легкостью переместитесь из split в split:
    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    
0
ответ дан Dionysis 18 August 2018 в 17:50
поделиться

Добавление другого ответа, поскольку это не покрывается никаким ответом

Чтобы изменить все буферы на tab.

 :tab sball

откроет все буферы на вкладку Посмотреть. Затем мы можем использовать любые команды, связанные с вкладкой

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

, в :help tab-page-commands.

Мы можем проинструктировать vim открыть в виде табуляции несколько файлов vim -p file1 file2. alias vim='vim -p' будет полезна. То же самое можно добиться и после автокоманды в ~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

В любом случае, чтобы ответить на вопрос: добавить в список arg: arga file,

Чтобы удалить из списка arg: argd pattern

Еще в :help arglist

5
ответ дан dlmeetei 18 August 2018 в 17:50
поделиться

Я сделал очень простое видео , показывающее рабочий процесс, который я использую. В основном я использую плагин Ctrl-P Vim, и я отобразил навигацию буфера на клавишу Enter.

Таким образом, я могу нажать Enter в нормальном режиме, посмотреть список открытых файлов (отображается в маленьком новом окне в нижней части экрана), выберите файл, который я хочу изменить, и снова нажмите Enter. Чтобы быстро найти несколько открытых файлов, просто введите часть имени файла, выберите файл и нажмите Enter.

У меня не так много файлов, открытых в видео, но это становится невероятно полезным, когда вы начинаете

Поскольку плагин сортирует буферы с использованием заказа MRU, вы можете просто нажать Enter дважды и перейти к самому последнему файлу, который вы редактировали.

После плагин установлен, единственная конфигурация, в которой вы нуждаетесь:

nmap <CR> :CtrlPBuffer<CR>

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

2
ответ дан fede1024 18 August 2018 в 17:50
поделиться

Вы можете захотеть использовать глобальные отметки Vim .

Таким образом, вы можете быстро отскакивать между файлами и даже до отмеченного места в файле. Кроме того, ключевые команды короткие: 'C возвращает меня к коду, с которым я работаю, 'T принимает меня к модульному тесту, с которым я работаю.

Когда вы меняете места, метки тоже быстрые: mC отмечает новое кодовое пятно, mT отмечает новое тестовое место.

13
ответ дан glts 18 August 2018 в 17:50
поделиться

Я использую следующее: это дает вам множество функций, которые вы ожидаете иметь в других редакторах, таких как Sublime Text / Textmate

  1. Использовать буферы, а не «вкладки». Буферы - это та же концепция, что и вкладки практически во всех других редакторах.
  2. Если вы хотите иметь одинаковый вид наличия вкладок, вы можете использовать плагин vim-airlines со следующими настройками в вашем .vimrc: let g:airline#extensions#tabline#enabled = 1. Это автоматически отображает все буферы в виде заголовков табуляции, когда у вас нет открываемых страниц.
  3. Используйте vim-unimpaired Tim Pope], который дает [b и] b для перехода к предыдущим / следующим буферам (плюс целый ряд других полезных свойств)
  4. У вас set wildmenu в вашем .vimrc, а затем, когда вы вводите :b <file part> + Tab для буфера, вы получите список возможных буферов, которые вы можете использовать стрелки влево / вправо для прокрутки
  5. Используйте плагин vim-obsession Тима Папа для хранения сеансов, которые прекрасно сочетаются с авиалинией (у меня было много боли с сеансами и плагинами )
  6. Используйте плагин vim-vinegar Тима Папы. Это работает с родным :Explore, но облегчает работу с ним. Вы просто набираете -, чтобы открыть проводник, который является тем же самым ключом, что и вверх по каталогу в проводнике. Делает навигацию быстрее (однако с fzf я редко использую это)
  7. fzf (который может быть установлен как плагин vim) также является действительно мощным нечетким поиском, который вы можете использовать для поиска для файлов (и буферов). fzf также играет очень хорошо с fd (более быстрая версия поиска)
  8. Используйте Ripgrep с vim-ripgrep для поиска через вашу базу кода, а затем вы можете использовать :cdo для результатов поиска и замены
4
ответ дан icc97 18 August 2018 в 17:50
поделиться

Если вы собираетесь использовать несколько буферов, я думаю, что самое главное - установить скрытые так, чтобы они позволяли вам переключаться с буферами, даже если у вас есть несохраненные изменения в том, что вы уходите.

11
ответ дан indentation 18 August 2018 в 17:50
поделиться

Я использую командную строку и git много, поэтому у меня есть этот псевдоним в моем bashrc:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Это откроет каждый новый файл на новой вкладке в существующем окне и создаст один окно для каждого репозитория git. Итак, если вы откроете два файла из репо A и 3 файла из репо B, вы получите два окна: один для репо A с двумя вкладками и один для репо B с тремя вкладками.

Если файл, который вы открываете, не содержится в git repo, он перейдет в окно по умолчанию.

Для перехода между вкладками я использую эти сопоставления:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Чтобы открыть несколько файлов на как только вы должны объединить это с одним из других решений.

3
ответ дан Jens 18 August 2018 в 17:50
поделиться

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

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Он отлично сочетает команды :ls и :b - перечисление всех открытых буферов и ожидание ввода команды для переключения буфера.

Учитывая приведенное выше сопоставление в vimrc, после ввода <Leader>f,

  • Все открытые буферы
  • Вы можете: Введите 23, чтобы перейти в буфер 23, введите #, чтобы перейти в альтернативный буфер / MRU, введите частичное имя файла, затем введите <Tab> или <C-i> для автозаполнения, или просто <CR> или <Esc>, чтобы оставаться в текущем буфере

Снимок вывода для вышеуказанного отображения клавиш:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

В приведенном выше снимке:

  • Второй столбец: %a для тока, h для скрытых, # для предыдущего, пустого для не было переключено.
  • Третий столбец: + для модифицированного.

Кроме того, я настоятельно рекомендую set hidden. См. :help 'hidden'.

6
ответ дан K.Dᴀᴠɪs 18 August 2018 в 17:50
поделиться
  • 1
    Эта великолепная идея! Я использовал :b и :ls много, но независимо. Я думаю, что это становится менее полезным, если у вас больше буферов на странице, но тогда вы все равно можете вернуться к :b – icc97 1 September 2017 в 08:37
  • 2
    Рад видеть, что это помогает. Ура! :) – qeatzy 1 September 2017 в 09:13
  • 3
    Из этого Vim wikia вы можете немного сократить его до nnoremap <leader>f :ls<cr>:b<space>, что может вызвать проблемы с командой «больше», хотя – icc97 21 September 2017 в 12:14
  • 4
    Да, этот способ отлично работает, если открыто меньше файлов (обычный вариант использования). set more материал имеет значение только при открытии большого количества файлов (более одной страницы), например vim /usr/include/*, хотя это менее полезно. – qeatzy 22 September 2017 в 07:01

Vim (но не оригинальный Vi!) имеет вкладки, которые я нахожу (во многих контекстах) выше буферов. Вы можете сказать :tabe [filename], чтобы открыть файл на новой вкладке. Переключение между вкладками осуществляется щелчком по вкладке или комбинациями клавиш [ n ] gt и gT. Графический Vim даже имеет графические вкладки.

30
ответ дан Konrad Rudolph 18 August 2018 в 17:50
поделиться
  • 1
    Спасибо, отлично звучит, но у нас, к сожалению, есть только VIM 6.1, установленный на сервере. – Edward Tanguay 10 September 2008 в 10:16
  • 2
    Вкладки очень удобны с помощью подстановочных знаков: vim -p dir/*. Максимальный размер вкладки - 10, но вы можете изменить его в настройке ~/.vimrc tabpagemax на другое значение. – Campa 18 June 2013 в 13:26

Я использую тот же файл .vimrc для GVim и командной строки vim. Я стараюсь использовать вкладки в GVim и буферах в командной строке vim, поэтому у меня установлен мой .vimrc, чтобы упростить работу с обоими из них:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

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

12
ответ дан Max Cantor 18 August 2018 в 17:50
поделиться
  • 1
    Мне нравятся эти сопоставления. Также попробуйте Ctrl-H, Ctrl-L. Я устанавливаю Firefox и терминал gnome с теми же сопоставлениями. Очень приятно иметь последовательные ярлыки ключевых клавиш. – cmcginty 3 July 2009 в 21:21
  • 2
    используйте ключ-лидер вместо ctrl, чтобы избежать сглаживания существующих сопоставлений – aehlke 10 August 2010 в 12:03

Мой способ эффективно работать с несколькими файлами - использовать tmux.

Позволяет разбивать окна по вертикали и по горизонтали, например:

enter image description here [/g0]

У меня это работает на моих машинах mac и linux, и я нахожу его лучше, чем встроенный механизм переключения окон, который предоставляется (на компьютерах Mac). Я считаю, что переход проще и только с tmux я смог получить «новую страницу в том же текущем каталоге», работающую на моем mac (несмотря на то, что, кажется, есть варианты для открытия новых панелей в том же каталоге), который удивительно критическая часть. Новейшее новое место в текущем месте удивительно полезно. Метод, который делает новые панели с теми же ключевыми комбо для обеих ОС, имеет для меня решающее значение и бонус для всех для будущей личной совместимости. Помимо нескольких панелей tmux, я также попытался использовать несколько вкладок, например. enter image description here [/g1] и несколько новых окон, например. enter image description here [/g2], и в конечном итоге я обнаружил, что для меня наиболее полезны несколько панелей tmux. Я очень «визуальный» и люблю держать свои различные контексты прямо передо мной, соединенными вместе как панели.

tmux также поддерживает горизонтальные и вертикальные панорамы, которые более старые screen не использовали (хотя mac itm2, похоже, поддерживает его, но опять же, текущая настройка каталога для меня не работала). tmux 1.8

8
ответ дан Michael Durrant 18 August 2018 в 17:50
поделиться
  • 1
    Мне пришлось lol, когда я увидел ваш искусственный пример «нескольких окон». Надеюсь, никто не работает так :-) Во всяком случае, я использую tiling wm, который еще лучше (я переключился с tmux на i3wm). Просто чтобы закончить свой ответ. – lzap 8 July 2014 в 10:15
  • 2
    Tmux является удивительным, и я использовал этот подход в течение длительного времени, но это делает навигацию и копирование и склеивание между двумя файлами сложнее. – neallred 18 January 2016 в 23:05
  • 3
    Я использовал это, но наличие нескольких буферов vim превосходит, когда вам нужно выдернуть / вставить – Titou 16 November 2017 в 16:51

Я бы предложил использовать плагин

NERDtree

Вот ссылка github с инструкциями.

Nerdtree

Я использую vim-plug как менеджер плагинов, но вы также можете использовать Vundle.

vim-plug

Vundle

0
ответ дан nakulchawla09 18 August 2018 в 17:50
поделиться

Вы можете быть абсолютным сумасшедшим и псевдоним vim до vim -p, добавив в свой .bashrc:

alias vim="vim -p"

Это приведет к открытию нескольких файлов из оболочки во вкладках, без необходимости вызывать :tab ball изнутри vim.

1
ответ дан npit 18 August 2018 в 17:50
поделиться

Здесь много ответов! То, что я использую, не изобретая колесо, - самые известные плагины (которые не собираются умирать в ближайшее время и используются многими людьми), чтобы быть очень быстрыми и вызывающими.

  • ctrlpvim / ctrlp. vim - найти файл по имени нечеткий поиск по его местоположению или только его имя
  • jlanzarotta / bufexplorer - просматривать открытые буферы (когда вы не помните, сколько файлов вы открыли и недавно изменили, и вы не помните где они находятся, вероятно, потому, что вы искали их с помощью Ag)
  • rking / ag.vim для поиска файлов по отношению к gitignore
  • scrooloose / nerdtree, чтобы увидеть структуру каталогов, lookaround , добавить / удалить / изменить файлы

UPDATE : Недавно я использую dyng / ctrlsf.vim для поиска в контекстном представлении (например, Sublime search), и я переключил двигатель от ag до ripgrep. Производительность невыполнима.

21
ответ дан Petur Subev 18 August 2018 в 17:50
поделиться
  • 1
    ctrlp переместился и теперь находится в ctrlpvim / ctrlp.vim – Dave 24 April 2016 в 12:50
  • 2
    ЭТО - правильный ответ! Почему у него нет больше оборотов? – Thomas Möbius 15 July 2016 в 06:43
  • 3
    У него больше нет бонусов, потому что вопрос был задан в 2008 году. :) – burnettk 1 May 2017 в 01:13

Листинг

Чтобы просмотреть список текущих буферов, я использую:

:ls

Открытие

Чтобы открыть новый файл, я используйте

:e ../myFile.pl

с расширенным завершением вкладки (поставьте set wildmenu в .vimrc).

Примечание: вы также можете использовать :find, который будет искать набор путей для вас, но сначала вам нужно настроить эти пути.


Переключение

Для переключения между всеми открытыми файлами я использую

:b myfile

с :b#. :b# выбирает последний посетивший файл, поэтому вы можете использовать его для быстрого переключения между двумя файлами.


Использование окон

Ctrl-W s и Ctrl-W v для разделения текущего окна по горизонтали и по вертикали. Вы также можете использовать :split и :vertical split (:sp и :vs)

Ctrl-W w для переключения между открытыми окнами и Ctrl-W h (или j или k или l) для перемещения по открытым окнам.

Ctrl-W c, чтобы закрыть текущее окно, и Ctrl-W o, чтобы закрыть все окна, кроме текущего.

Запуск vim с помощью -o или -O флаг открывает каждый файл в своем собственном расколе.


При всем этом мне не нужны вкладки в Vim, и мои пальцы находят мои буферы, а не мои глаза.

Примечание: если вы хотите, чтобы все файлы переходили в один экземпляр Vim, запустите Vim с опцией --remote-silent.

493
ответ дан pjz 18 August 2018 в 17:50
поделиться
  • 1
    Если вы играете с несколькими буферами, я бы рекомендовал LustyJuggler . – Arun M 6 November 2010 в 03:50
  • 2
    Спасибо за то, что вы сделали очень приятную ссылку для команд vim, которые чаще всего используются при работе с несколькими файлами. – quanticle 19 March 2011 в 18:49
  • 3
    Или :b#, где # - индекс файла в буфере, а не только последний посетитель – Brian 10 October 2013 в 16:54
  • 4
    :b - очень мощная команда, потому что она может принимать как номера буфера, так и имена буферов в качестве аргументов. Что еще? Он также поддерживает выполнение табуляции в любой части имени файла. Скажем, у вас есть foo.txt open в буфере 2, вы можете набрать :b 2<Enter> или :b foo.txt или :b oo<Tab><Enter>, чтобы отредактировать этот файл. Да, последний будет завершать «oo» до «foo.txt», когда вы нажимаете & lt; Tab & gt ;. – Susam Pal 1 May 2014 в 20:45
  • 5
    У меня есть эта строка в моем .vimrc: nnoremap gb :ls<cr>:b<space>. Когда я набираю gb в командном режиме, он перечисляет мои открытые буферы и типы :b , готовые для начала ввода имени / номера буфера. – nkorth 27 February 2015 в 19:21
  • 6
    – Soren Bjornstad 5 May 2018 в 01:39

Такие вещи, как :e и :badd, будут принимать только один аргумент, поэтому следующее будет терпеть неудачу

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Если вы хотите добавить несколько файлов из vim, используйте arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*
23
ответ дан puk 18 August 2018 в 17:50
поделиться

Когда я начал использовать VIM, я не понимал, что вкладки должны использоваться как разные макеты окон, а буфер служит ролью для множественного редактирования / переключения файлов между собой. На самом деле в начале вкладки даже не были до версии v7.0, и я только что открыл один VIM внутри вкладки терминала (я использовал гном-терминал в данный момент) и переключался между вкладками, используя alt + numbers, так как я думал, используя команды вроде : buffers,: bn и: bp были слишком много для меня. Когда был выпущен VIM 7.0, мне было проще управлять большим количеством файлов и переключаться на него, но в последнее время я просто понял, что буферы всегда должны быть в пути, если только одно: вам нужно настроить его, чтобы он работал правильно.

Итак, я попробовал vim-авиакомпанию и включил визуальную верхнюю вкладку-буферную панель, но у графика возникла проблема с моим iTerm2, поэтому я попробовал пару других, и кажется, что MBE работает лучше для меня. Я также устанавливаю shift + h / l как ярлыки, так как исходные (перемещение к голове / хвосту текущей страницы) для меня не очень полезны. map <S-h> :bprev<Return> map <S-l> :bnext<Return>

Кажется, что еще проще, чем gt и gT, и: e проще, чем: tabnew. Я нахожу: bd не так удобен, как: q хотя (у MBE есть некоторые проблемы с ним), но я могу жить со всеми файлами в буфере, которые я думаю.

1
ответ дан superarts.org 18 August 2018 в 17:50
поделиться

попробуйте следующие карты для удобства редактирования нескольких файлов

"split windows

nmap <leader>sh :leftabove vnew<CR>

nmap <leader>sl :rightbelow vnew<CR>

nmap <leader>sk :leftabove new<CR>

nmap <leader>sj :rightbelow new<CR>

"перемещение

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h

3
ответ дан user2663398 18 August 2018 в 17:50
поделиться
:ls

для списка открытых буферов

  • :bp Предыдущий буфер
  • :bn следующий буфер
  • :bn (n число) переместитесь в n-й буфер
  • :b <filename-part> с помощью клавиши табуляции, обеспечивающей автозаполнение (awesome !!) [/ ​​g3]

В некоторых версиях vim , bn и bp на самом деле bnext и bprevious соответственно.

Если вы находитесь в обычном режиме, используйте ^, чтобы переключиться на последний файл, над которым вы работали.

Плюс, вы может сохранять сеансы vim

:mksession! ~/today.ses

Вышеприведенная команда сохраняет текущие буферы и настройки открытых файлов на ~/today.ses. Вы можете загрузить этот сеанс с помощью

vim -S ~/today.ses

Не беспокоиться о том, где вы остановились вчера. ;)

203
ответ дан user664833 18 August 2018 в 17:50
поделиться
  • 1
    @shyam: Где использовать команду: vim -S ~ / today.ses – Sagar Jain 18 August 2015 в 10:56
  • 2
    @SagarJain из командной строки – shyam 20 August 2015 в 06:17
  • 3
    перейдите в конкретный буфер: N CTRL- ^ – showise 10 November 2015 в 13:15
  • 4
    @shyam Я думаю, что люблю тебя! Как-то я никогда не знал наверняка о команде mksession, но сегодня я сижу, я решил, что ДОЛЖЕН быть каким-то образом сохранить список файлов, чтобы их легко открыть. Это даже лучше, поскольку даже кажется, что оно хранит полное состояние вещей (разбиение окон, расположение буфера и т. Д.). Так что спасибо! – Kasapo 15 June 2016 в 19:42
  • 5
    Кроме того, используйте знак ", чтобы перейти к тому месту, где вы были в файле в последний раз. – Chromium 28 May 2018 в 05:15
37
ответ дан Arslan Ali 7 September 2018 в 02:20
поделиться
37
ответ дан Arslan Ali 7 September 2018 в 02:20
поделиться
36
ответ дан Arslan Ali 30 October 2018 в 06:35
поделиться
Другие вопросы по тегам:

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