Рассмотрение документации управления VirtualBox VM по http://www.virtualbox.org/manual/ch08.html
Для списка VMs используйте команду VBoxManage list vms
Для запуска VM используйте команду VBoxManage startvm
http://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm
Для управления VM использовать VBoxManage controlvm
controlvm
подкоманда позволяет Вам изменять состояние виртуальной машины, которая в настоящее время работает. Следующее может быть указано:
VBoxManage controlvm
временно приостанавливает виртуальную машину, не изменяя ее состояние навсегда. Окно VM будет нарисовано в сером, чтобы указать, что VM в настоящее время приостанавливается. (Это эквивалентно выбору объекта "Паузы" в меню "Machine" GUI.)
Использовать VBoxManage controlvm
отменить предыдущую команду "пауза". (Это эквивалентно выбору объекта "Резюме" в меню "Machine" GUI.)
VBoxManage controlvm
имеет тот же эффект на виртуальную машину как нажатие кнопки "Reset" на реальном компьютере: "холодная" перезагрузка виртуальной машины, которая перезапустит и загрузит гостевую операционную систему снова сразу. Состояние VM не сохраняется заранее, и данные могут быть потеряны. (Это эквивалентно выбору объекта "Сброса" в меню "Machine" GUI.)
VBoxManage controlvm
имеет тот же эффект на виртуальную машину как надевание силового кабеля на реальном компьютере. Снова, состояние VM не сохраняется заранее, и данные могут быть потеряны. (Это эквивалентно выбору "Близкого" объекта в меню "Machine" GUI или нажатия близкой кнопки окна, и затем выбор "Выключает машину" в диалоговом окне.)
После этого состояние VM будет "Выключено".
У меня нет точного решения для Вашей проблемы, надо надеяться, лучший ответ, чем моя подойдет. Но это - то, как я занялся проблемой нахождения слова во всех буферах.
" enables to search in all open buffers with :Search <pattern>
command! -nargs=1 Search call setqflist([]) | silent bufdo grepadd! <args> %
nnoremap <left> :cprev<cr>zvzz
nnoremap <right> :cnext<cr>zvzz
Первая строка создает команду Search
с шаблоном поиска как аргумент, который пишет результаты в списке quickfix. Две других строки отображаются (по крайней мере, для меня) бесполезные клавиши со стрелками к чему-то полезному; они отображаются для перехода к следующему/предыдущему Поиску или к следующей/предыдущей ошибке компиляции, и т.д., они просто ступают throu список quickfix. Можно использовать это следующим образом:
:Search foobar
<right>
<right>
…
Это - на самом деле поведение по умолчанию, хотя может быть трудно заметить: попробовать *
затем изменитесь на другую вкладку и использование n
ответ N
в командном режиме для перехода вперед и назад между поисковыми хитами.
Это может иметь больше смысла сначала при включении выделения для всех хитов:
:set hlsearch
hlsearch
то, что я не знал, и который у меня будет поиск в течение одного дня или другого :-). Однако по умолчанию я попробовал * #, n и N, и он не переходит к другим буферам файлов...
– Stephane Rolland
03.01.2013, 17:10
n
и N
не переходите буферы (они повторяются), но термин, для которого они предназначаются, разыскивается на всех вкладках; хит *
с выделением на затем цикле через Ваши вкладки - они будут все выделены с тем же термином, таким образом, можно будет использовать n
и N
локально там без нового поиска.
– goldilocks
03.01.2013, 17:28
hlsearch
набор.
– goldilocks
26.06.2014, 21:33
Поскольку я делал часто это, я смял (improvable) сценарий.
Вы или кто-то еще могли бы найти это полезным.
В основном это ищет буферный список и выставочный результат в quickfix-окне.
Две основных команды добавляется.
Поиск <образец>
: Искать все буферы <образец>
. Search1 <образец>
: Искать все буферы <образец>
, но только показать первый результат для каждого буфера. Обычно полезный для списка всех буферов, где функция, переменная нечто
используется, (или что когда-либо). удар Использования (: Искать! нечто
) для добавления к результатам.
Дополнительно GSearch
и GSearch1
добавляется, где различие - то, что с Поиск
сценарий добавляет regex разделитель, например:
foo -> /foo/
, Где как GSearch
ожидают, что это будет включено.
флаг j
всегда добавляется для предотвращения перехода.
существуют некоторые взломы для предотвращения списка ошибок, одновременно сохраняя код коротким. попытка / выгода
была немного громоздкой на bufdo
.
let s:not_idents = split("/!#$%&\"`´¨'¯()*+,-.:;<=>?¿@[\]^{|}µ¶·¸~±×÷®©«»¬ª°º¹²³¼½¾", '\zs')
" Create a delimited pattern. "
fun! s:Parse_pat(pat)
for c in s:not_idents
if stridx(a:pat, c) == -1
return c . a:pat . c
endif
endfor
echohl Error
echom "Could not delimit pattern '". a:pat ."'"
echohl None
return ''
endfun
fun! s:AllBufSearch(pat, bang, uno, isg)
if a:isg
let pat = a:pat
else
let pat = s:Parse_pat(a:pat)
endif
if pat == ''
return
endif
cclose
let [_buf, _view] = [bufnr("%"), winsaveview()]
let _foldenable = &foldenable
set nofoldenable
" Copy of current qflist. "
let qfc = getqflist()
" Hack to prevent error if no matches. "
call setqflist([{}])
silent execute "bufdo vimgrepadd! " . pat . "j %"
" Restore "
exec "buffer " . _buf
let &foldenable = _foldenable
call winrestview(_view)
" Fix "
let qf = getqflist()
call remove(qf, 0)
" Only one listing per buffer. "
if a:uno
let bn = {}
let i = 0
for m in qf
if has_key(bn, m["bufnr"])
call remove(qf, i)
else
let bn[m["bufnr"]] = 1
call remove(qf[i], "valid")
let i += 1
endif
endfor
endif
if a:bang == "!"
let qf = qfc + qf
endif
" If any matches, copen. "
if len(qf)
call setqflist(qf)
copen
endif
endfun
command! -nargs=1 -bang Search call s:AllBufSearch(<q-args>, "<bang>", 0, 0)
command! -nargs=1 -bang Search1 call s:AllBufSearch(<q-args>, "<bang>", 1, 0)
command! -nargs=1 -bang GSearch call s:AllBufSearch(<q-args>, "<bang>", 0, 1)
command! -nargs=1 -bang GSearch1 call s:AllBufSearch(<q-args>, "<bang>", 1, 1)
:cn
или:cp
переключаться на следующий документ. – phyatt 10.04.2017, 23:36