Я не думаю, что можно добраться, инициировали расширение истории и возвращают результат из zsh.
Вот подтверждение концепции для использования zpty
модуль для взаимодействия с нижним процессом zsh имейте его, разворачивают строки истории и изучают результат (который мог быть должен сообщить об ошибке или выполнить команду). Поместите первоначальную историю, которую Вы хотите перед каждой попыткой расширения в названном файле prior_history
.
#!/usr/bin/zsh
setopt extended_glob
zmodload zsh/zpty
zpty -b inferior_zsh 'PS1=%% PS2=\> TERM=dumb strace -eread,write -o zsh.strace zsh -f'
zpty -r inferior_zsh out $'*\r%'
zpty -w inferior_zsh 'stty -echo'
zpty -r inferior_zsh out $'*\r%'
start='mv /Volumes/hdd1/path/to/a/file.foo'
history_string='!#$:r:s/foo/bar/'
for ((i=1; i <= $#history_string; i++)) {
zpty -w inferior_zsh "fc -R prior_history"
zpty -r inferior_zsh out $'*\r%'
zpty -w inferior_zsh "print -r expansion: ${(q)start} ${history_string[1,$i]}"
zpty -r inferior_zsh out $'*\r[%>]'
out=${${out#*$'\r\r\n'}%$'\r\n'% ##$'\r\r%'}
print -r "$i ${(qqqq)out}"
}
Нет, вам не нужно вводить команду со страницы вы связались с ~ / .vimrc
, вы можете просто ввести их после ввода :
в vim
, чтобы получить командную строку.
Однако, если вы поместите строки:
set foldmethod=indent
set foldnestmax=10
set nofoldenable
set foldlevel=2
, как указано в предоставленной вами ссылке, в вашем ~ / .vimrc
, вам не придется вводить их каждый раз, когда вы хотите использовать сворачивание. файл. Параметр nofoldenable
гарантирует, что при открытии файлы будут «нормальными», то есть не свернутыми.
Не обязательно использовать ее систематически: Обычно я вручную выбираю складки по движению или разделу. Например, сгиб абзаца - это zfip
, а сгиб следующих 20 строк - это zf20j
. Используйте za
для переключения и zd
для удаления.
Это требует немного больше работы, но позволяет вашему складыванию отразить текущую задачу.
В текущем сеансе можно включить складывание
, как @Anthon's answer. Но если Вы хотите сделать его постоянным, Вы должны установить как минимум эту строку в .vimrc
для работы со сгибанием:
set foldmethod=indent
отступ
это своего рода сгибание, Вы можете увидеть больше из :help foldmethod
'foldmethod' 'fdm' string (default: "manual")
local to window
{not in Vi}
{not available when compiled without the +folding
feature}
The kind of folding used for the current window. Possible values:
fold-manual manual Folds are created manually.
fold-indent indent Lines with equal indent form a fold.
fold-expr expr 'foldexpr' gives the fold level of a line.
fold-marker marker Markers are used to specify folds.
fold-syntax syntax Syntax highlighting items specify folds.
fold-diff diff Fold text that is not changed.
Теперь, каждый раз, когда Вы открываете файл с vim
, Вы можете видеть, что код складывается по заданному методу. Затем можно использовать za
, zc
, zo
.
Метод сворачивания в Vim по умолчанию - manual
, что означает, что складки создаются вручную; в противном случае, нет складки, которую можно закрыть или открыть с помощью za, zo или zc, как вы описали. Но, вы можете создать складку с помощью zf{motion}
в режиме Normal или zf в режиме Visual; например. g. zfj создает складку для текущей строки и следующей за ней в режиме Normal.
indent
Принятый ответ @Anthon описывает, как установить метод фальцовки на indent
; т.е. фальцовка определяется уровнем отступов.
syntax
Более удобным способом, складки могут быть созданы автоматически на основе синтаксиса языка текущего буфера. Если вы используете язык программирования, назовем его L, и у вас есть определение складчины L (например, вы установили плагин Vim, в котором определена информация о складках L; например, c. vim для C/C++, или python-mode для Python), вам просто нужно установить метод складывания на syntax
:
set foldmethod=syntax
Вот и все. Наиболее полезные команды для работы со складками:
foldlevel
на единицу. foldlevel
на единицу. foldlevel
до нуля - все складки будут открыты. Если кто-то хочет изменить метод сворачивания по умолчанию и остановить автоматическое -складывание при открытии нового файла, добавьте этот код в файл конфигурации vim ниже:
setlocal foldmethod=syntax
setlocal foldlevelstart=99
setlocal foldmethod
— изменить метод Manual
складывания по умолчанию, а foldlevelstart
— остановить автоматическое -складывание при открытии файлов. Вы можете изменить значение, чтобы настроить автоматический уровень складывания -. проверьте документацию здесь:https://neovim.io/doc/user/options.html#'foldlevelstart'