Я начал использовать Vim для разработки сценариев Perl и начинаю находить его очень мощным.
Мне нравится то, что я могу открывать несколько файлов одновременно:
vi main.pl maintenance.pl
и затем прыгайте между ними:
:n
:prev
и посмотрите, какой файл открыт с помощью:
:args
И чтобы добавить файл, я могу сказать:
:n test.pl
который я ожидаю, будет добавлен в мой список файлов, но вместо этого он стирает мой текущий список файлов, и когда я набираю, у :args
меня только test.pl
открыт.
Итак, как я могу добавлять и удалять файлы в моем списке аргументов?
:N
кажется, более простой способ перейти к предыдущему файлу ...Ответы:
Почему бы не использовать вкладки (представленные в Vim 7)? Вы можете переключаться между вкладками с помощью
:tabn
и:tabp
, С помощью:tabe <filepath>
вы можете добавить новую вкладку; и с обычной:q
или:wq
вы закрываете вкладку. Если вы сопоставляете:tabn
и:tabp
со своими ключами F7/, F8вы можете легко переключаться между файлами.Если нет , что много файлов или вы не имеете Vim 7 можно также разделить экран на несколько файлов:
:sp <filepath>
. Затем вы можете переключаться между разделительными экранами с помощью Ctrl+ Wи затем стрелкой в направлении, которое вы хотите переместить (или вместо клавиш со стрелками, wдля следующего и Wдля предыдущего разделенного экрана)источник
ZZ
вместо:wq
(точно так же, как при обычном сохранении и закрытии)gt
переходит на следующую вкладку иgT
переходит на предыдущую вкладку.-p
флаг, чтобы открывать несколько файлов на вкладках из командной строки. Например,gvim -p main.pl maintenance.pl
откроются эти два файла во вкладках.Листинг
Чтобы увидеть список текущих буферов, я использую:
открытие
Чтобы открыть новый файл, я использую
с расширенным завершением вкладки (положить
set wildmenu
в свой.vimrc
).Примечание: вы также можете использовать метод,
:find
который будет искать набор путей для вас, но вам нужно сначала настроить эти пути.коммутация
Для переключения между всеми открытыми файлами я использую
с улучшенным завершением вкладки (до сих пор
set wildmenu
).Примечание:
: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
параметром.источник
:b
это очень мощная команда, потому что она может принимать как номера буферов, так и имена буферов в качестве аргументов. Что еще? Он также поддерживает завершение табуляции в любой части имени файла. Скажем, у вас открыт файл foo.txt в буфере 2, вы можете напечатать:b 2<Enter>
или:b foo.txt
или:b oo<Tab><Enter>
отредактировать этот файл. Да, последний из них будет завершать «oo» до «foo.txt», когда вы нажимаете <Tab>.nnoremap gb :ls<cr>:b<space>
. Когда я печатаюgb
в командном режиме, в нем перечислены мои открытые буферы и типы:b
, готовые начать вводить имя / номер буфера.:b
будет принимать совпадение подстроки, если оно однозначно. Так что, если у вас есть открытые файлыfoo
,bar
иbaz
,:b z
достаточно просто переключить вас вbaz
буфер, и:b oo
или:b o
приведет вас вfoo
буфер.для списка открытых буферов
:bp
предыдущий буфер:bn
следующий буфер:bn
(n
число) перейти к n-му буферу:b <filename-part>
с вкладкой, обеспечивающей автозаполнение (круто !!)В некоторых версиях vim есть
bn
иbp
собственноbnext
иbprevious
соответственно. В этом случае полезно автоматическое заполнение вкладки.Или, когда вы находитесь в обычном режиме, используйте
^
для переключения на последний файл, с которым вы работали.Кроме того, вы можете сохранить сеансы VIM
Приведенная выше команда сохраняет текущие открытые буферы файлов и настройки в
~/today.ses
. Вы можете загрузить этот сеанс, используяНет проблем, вспоминая, где вы остановились вчера. ;)
источник
"
метку, чтобы перейти к тому месту, где вы были в файле в прошлый раз.Добавить в
args
список:Чтобы удалить из
args
списка:В вашем примере вы можете использовать
:argedit
test.pl, чтобы добавить test.pl вargs
список и отредактировать файл за один шаг.:help args
дает гораздо больше деталей и расширенного использованияисточник
Я использую команды буфера -
:bn
(следующий буфер),:bp
(предыдущий буфер):buffers
(список открытых буферов):b<n>
(открытый буфер n):bd
(удаление буфера).:e <filename>
просто откроется в новый буфер.источник
Я думаю, что вы можете использовать неправильную команду для просмотра списка файлов, которые вы открыли.
Попробуйте сделать,
:ls
чтобы увидеть список файлов, которые вы открыли, и вы увидите:Затем вы можете просматривать файлы, обращаясь к ним по указанным номерам, например: 3b
или вы можете разделить экран, введя номер, но используя sb вместо b.
Aside% относится к текущему файлу, а # относится к альтернативному файлу.
Вы можете легко переключаться между этими двумя файлами, нажав Ctrl Shift 6
Редактировать: как
:ls
вы можете использовать:reg
для просмотра текущего содержимого ваших регистров, включая регистры 0-9, которые содержат то, что вы удалили. Это особенно полезно, если вы хотите повторно использовать текст, который вы ранее удалили.источник
В Vim (но не в оригинальном Vi!) Есть вкладки, которые я считаю (во многих случаях) превосходящими буферы. Вы можете сказать,
:tabe [filename]
чтобы открыть файл в новой вкладке. Переключение между вкладками осуществляется нажатием на вкладку или комбинациями клавиш [ n ]gt
иgT
. Графический Vim даже имеет графические вкладки.источник
vim -p dir/*
. Максимальный размер вкладки составляет 10, но вы можете изменить его в~/.vimrc
настройкеtabpagemax
на другое значение.Здесь много ответов! То, что я использую, не изобретая велосипед - самые известные плагины (которые скоро не умрут и будут использоваться многими людьми), чтобы быть очень быстрыми и вызывающими.
РЕДАКТИРОВАТЬ: Недавно я использовал dyng / ctrlsf.vim для поиска с контекстным представлением (как Sublime search), и я переключил движок с ag на ripgrep . Производительность выдающаяся.
EDIT2: Наряду с CtrlSF вы можете использовать mg979 / vim-visual-multi , вносить изменения в несколько файлов одновременно, а затем в конце сохранять их за один раз.
источник
Такие вещи, как
:e
и:badd
будет принимать только один аргумент, поэтому следующее не удастсяЕсли вы хотите добавить несколько файлов из vim, используйте
arga[dd]
источник
Некоторые ответы в этой теме предлагают использовать вкладки, а другие предлагают использовать буфер для достижения той же цели. Вкладки и буферы разные. Я настоятельно рекомендую вам прочитать эту статью " Vim Tab Madness - Buffers vs Tabs ".
Вот хорошее резюме, которое я извлек из статьи:
Резюме:
источник
:help window
в VimКогда я использую несколько файлов в vim, я в основном использую эти команды (с ~ 350 открытыми файлами):
:b <partial filename><tab>
(перейти в буфер):bw
(очистка буфера, удаление буфера):e <file path>
(изменить, открыть новый буфер>pltags
- включить переход к определениям подпрограмм / методовисточник
:b <partial filename><tab>
плюсset wildmenu
в ваших.vimrc
работах хорошо, когда у вас есть тонны открытых буферов. Затем вы просто частично сопоставляете и просматриваете те, которые он находит. В других приличных редакторах у вас есть нечеткое нахождение, но обычно вы не можете ограничить это нечеткое нахождение только файлами, которые вы открыли.Добавление другого ответа, так как это не охватывается ни одним из ответов
Чтобы изменить все буферы для
tab
просмотра.откроет все буферы для просмотра вкладок. Тогда мы можем использовать любые команды, связанные с вкладками
детали в
:help tab-page-commands
.Мы можем указать vim открыть несколько файлов в виде вкладок
vim -p file1 file2
.alias vim='vim -p'
будет полезно.Этого же можно добиться, следуя автокоманде в
~/.vimrc
В любом случае , чтобы ответить на вопрос: Для того, чтобы добавить в список агд:
arga file
,Чтобы удалить из списка arg:
argd pattern
Больше на
:help arglist
источник
Вы можете использовать глобальные метки Vim .
Таким образом, вы можете быстро переключаться между файлами и даже отмечать место в файле. Кроме того, ключевые команды короткие: приводят
'C
меня к коду, с которым я работаю, приводят'T
меня к модульному тесту, с которым я работаю.При смене мест сбрасывание меток также выполняется быстро:
mC
отмечает новую область кода,mT
отмечает новую точку тестирования.источник
Я использую тот же файл .vimrc для gVim и командной строки Vim. Я склонен использовать вкладки в gVim и буферы в командной строке Vim, поэтому у меня настроен .vimrc, чтобы облегчить работу с ними обоими:
Это перекрывает существующие отображения для Hи L, но делает переключение между файлами чрезвычайно быстрым и простым. Просто нажмите Hдля следующего и Lдля предыдущего; используете ли вы вкладки или буферы, вы получите ожидаемые результаты.
источник
Если вы собираетесь использовать несколько буферов, я думаю, что наиболее важным является установка скрытых, так что это позволит вам переключать буферы, даже если у вас есть несохраненные изменения в том, который вы оставляете.
источник
Если используются только встроенные команды vim , лучшая, которую я когда-либо видел для переключения между несколькими буферами, это:
Он отлично сочетает в себе
:ls
и:b
команды - перечисление всех открытых буферов и ожидание ввода команды для переключения буфера.Приведенное выше отображение в vimrc, как только вы наберете
<Leader>f
,23
чтобы перейти к буферу 23,#
чтобы перейти к альтернативному буферу / MRU,<Tab>
или<C-i>
для автозаполнения,<CR>
или<Esc>
остаться в текущем буфереСнимок вывода для приведенного выше сопоставления клавиш:
На приведенном выше снимке:
%a
для текущего,h
для скрытого,#
для предыдущего, пустой для не был переключен на.+
для модификации.Кроме того, я настоятельно рекомендую
set hidden
. См:help 'hidden'
.источник
:b
и:ls
много но самостоятельно. Я думаю, что это становится менее полезным, когда у вас больше буферов, чем страница, но тогда вы все равно можете просто вернуться к:b
nnoremap <leader>f :ls<cr>:b<space>
, что может привести к проблемам с командой «more»set more
материал имеет значение только тогда, когда открыто много файлов (более одной страницы), напримерvim /usr/include/*
, хотя и менее полезно.Я использую следующее, это дает вам множество функций, которые вы ожидаете иметь в других редакторах, таких как Sublime Text / Textmate
.vimrc
:let g:airline#extensions#tabline#enabled = 1
. Это автоматически отображает все буферы как заголовки вкладок, когда у вас нет открытых вкладокset wildmenu
в вашем.vimrc
тогда , когда вы набираете:b <file part>
+ Tabдля буфера , вы получите список возможных буферов , которые вы можете использовать стрелки влево / вправо , чтобы прокручивать:Explore
но значительно облегчает работу. Вы просто набираете,-
чтобы открыть проводник, это тот же ключ, что и для перехода в каталог в проводнике. Делает навигацию быстрее (однако с fzf я редко использую это):cdo
результаты для поиска и замены.источник
Мой способ эффективно работать с несколькими файлами - использовать tmux.
Это позволяет разбивать окна по вертикали и горизонтали, как в:
У меня он работает таким образом как на моих компьютерах Mac, так и на Linux, и я нахожу его лучше, чем встроенный механизм переключения оконных панелей (на Mac). Я считаю, что переключение проще, и только с помощью tmux я смог получить «новую страницу в том же текущем каталоге», работающую на моем Mac (несмотря на то, что, кажется, есть варианты для открытия новых панелей в том же каталоге), что удивительно критическая часть. Мгновенно новая панель в текущем местоположении удивительно полезна. Метод, который создает новые панели с одинаковыми комбинациями клавиш для обеих ОС, очень важен для меня и является бонусом для будущей личной совместимости. Помимо нескольких панелей tmux, я также пытался использовать несколько вкладок, например и несколько новых окон, напримери в конечном итоге я обнаружил, что несколько панелей tmux являются наиболее полезными для меня. Я очень «визуален» и люблю держать свои различные контексты прямо перед собой, соединенные вместе как панели.
tmux также поддерживает горизонтальные и вертикальные панели, которые старые
screen
не поддерживали (хотя iterm2 для Mac, кажется, поддерживает это, но опять же, текущая настройка каталога не работает для меня). tmux 1.8источник
Я использую командную строку и много git, поэтому у меня есть этот псевдоним в моем bashrc:
Это откроет каждый новый файл в новой вкладке в существующем окне и создаст одно окно для каждого git-репозитория. Поэтому, если вы откроете два файла из репо A и 3 файла из репо B, у вас получится два окна, одно для репо A с двумя вкладками и одно для репо B с тремя вкладками.
Если открываемый файл не содержится в git-репо, он перейдет в окно по умолчанию.
Для перехода между вкладками я использую эти сопоставления:
Чтобы открыть несколько файлов одновременно, вы должны объединить это с одним из других решений.
источник
Я использую несколько буферов, которые скрыты в моем
~/.vimrc
файле.Скрипт мини-буфера также хорош для получения компактного списка ваших буферов. Затем
:b1
или:b2
... чтобы перейти к соответствующему буферу или использовать проводник мини-буфера и перейти через буферы.источник
попробуйте следующие карты для удобства редактирования нескольких файлов
"разделенные окна
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
источник
Я сделал очень простое видео, показывающее рабочий процесс, который я использую. В основном я использую плагин Ctrl-P Vim и сопоставил навигацию по буферу с клавишей Enter.
Таким образом, я могу нажать Enter в обычном режиме, посмотреть список открытых файлов (который отображается в небольшом новом окне внизу экрана), выбрать файл, который я хочу редактировать, и снова нажать Enter. Для быстрого поиска по нескольким открытым файлам просто введите часть имени файла, выберите файл и нажмите Enter.
У меня не так много файлов, открытых в видео, но это становится невероятно полезным, когда вы начинаете иметь их много.
Поскольку плагин сортирует буферы, используя порядок MRU, вы можете просто дважды нажать Enter и перейти к самому последнему файлу, который вы редактировали.
После установки плагина единственная конфигурация, которая вам нужна:
Конечно, вы можете сопоставить его с другим ключом, но я считаю, что сопоставление для ввода очень удобно.
источник
Я бы предложил использовать плагин
Вот ссылка на github с инструкциями.
Nerdtree
Я использую vim-plug как менеджер плагинов, но вы также можете использовать Vundle.
ВИМ-штекером
Vundle
источник
В моем и многих других пользователях vim лучший вариант -
А затем просто Ctrl + 6, чтобы перейти к последнему буферу. Или вы всегда можете нажать
А потом
<C-W><C-H/K/L/j>
поменять рабочий сплит.Вы можете редактировать любой файл в любом количестве разделений.
источник
Когда я начал использовать 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 есть некоторые проблемы с этим), но я могу жить со всеми файлами в буфере, я думаю.
источник
если вы используете osx и хотите иметь возможность нажимать на вкладки, используйте MouseTerm и SIMBL (взято отсюда ). Кроме того, проверьте это связанное обсуждение .
источник
Большинство ответов в этой теме используют простые команды vim, что, конечно, хорошо, но я подумал, что предоставлю исчерпывающий ответ, используя комбинацию плагинов и функций, которые я считаю особенно полезными (по крайней мере, некоторые из этих советов были взяты из файла Гари Бернхардта советы по навигации ):
Для переключения между двумя последними файлами просто нажмите
<leader>
дважды. Я рекомендую назначить<leader>
пробел:Для быстрого перемещения по проекту ответом является решение с нечетким соответствием, такое как CtrlP . Я связываю это
<leader>a
для быстрого доступа.В случае, если я хочу увидеть визуальное представление открытых в данный момент буферов, я использую плагин BufExplorer . Простой, но эффективный.
Если я хочу просмотреть файловую систему, я бы использовал командную строку или внешнюю утилиту (Quicklsilver, Afred и т. Д.), Но посмотреть на структуру текущего проекта NERD Tree - это классика. Не используйте это вместо
2
основного метода поиска файлов. Это действительно замедлит вас. Я использую привязку<leader>ff
.Этого должно быть достаточно для поиска и открытия файлов. Оттуда, конечно, используйте горизонтальные и вертикальные расколы. Что касается сплитов, я считаю эти функции особенно полезными:
Открывайте новые сплиты в небольших областях, когда недостаточно места, и расширяйте их при навигации. Обратитесь сюда для комментариев о том, что именно они делают:
Легко переходить от разделения к разделению:
источник
Вы можете быть в абсолютный безумец и псевдоним
vim
дляvim -p
добавляя в вашем.bashrc
:alias vim="vim -p"
Это приведет к открытию нескольких файлов из оболочки во вкладках, без необходимости
:tab ball
впоследствии вызывать из vim.источник