Как эффективно работать с несколькими файлами в Vim? - PullRequest
1046 голосов
/ 10 сентября 2008

Я начал использовать Vim для разработки сценариев Perl и начинаю находить его очень мощным.

Мне нравится то, что я могу открывать несколько файлов одновременно, например, vi main.pl maintenance.pl и затем прыгайте между ними с помощью:

:n
:prev

и посмотрите, какой файл открыт с

:args

А чтобы добавить файл, я могу сказать:

:n test.pl

, который я ожидаю, будет добавлен в мой список файлов, но вместо этого он стирает мой текущий список файлов, и когда я набираю :args, у меня открывается только test.pl.

Так, как мне ДОБАВИТЬ и УДАЛИТЬ файлы в моем списке аргументов?

Ответы [ 27 ]

2 голосов
/ 05 декабря 2015

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

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

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

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

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

nmap <CR> :CtrlPBuffer<CR>

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

2 голосов
/ 07 января 2014

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

"разделенные окна

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

1 голос
/ 04 июня 2018

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

NERDtree

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

Nerdtree

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

ВИМ-штекер

Vundle

1 голос
/ 21 октября 2017

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

alias vim="vim -p"

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

1 голос
/ 13 апреля 2015

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

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

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

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

0 голосов
/ 27 февраля 2016

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

  1. Для переключения между двумя последними файлами просто нажмите <leader> дважды. Я рекомендую присвоить <leader> пробелу:

    nnoremap <leader><leader> <c-^>
    
  2. Для быстрого перемещения по проекту ответом является решение с нечетким соответствием, например CtrlP . Я привязываю его к <leader>a для быстрого доступа.

  3. В случае, если я хочу видеть визуальное представление открытых в данный момент буферов, я использую плагин BufExplorer . Просто, но эффективно.

  4. Если я хочу просмотреть файловую систему, я бы использовал командную строку или внешнюю утилиту (Quicklsilver, Afred и т. Д.), Но для просмотра текущей структуры проекта Дерево NERD - это классический. Не используйте это вместо 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. Легко переходить от разделения к разделению:

    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 голосов
/ 31 мая 2013

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

...