В видео на Watch, как я работаю, он сначала получает вывод find . -type f
и использует этот список как обычный файл vim для поиска. Он находит этот файл в списке и может открыть его в vim. Это выглядит действительно полезным, но он не указывает псевдоним для этого. Может кто-нибудь дать мне псевдоним для того же?
2 ответа
То, что происходит, может быть объединено из точечных файлов автора. Предупреждение! Все это довольно запутанно (и умно).
Это команда
vim-
:vim-() { vim -s <(printf '\eh') }
Он открывает Vim и имитирует последовательность клавиш
<Esc>h
.<Esc>h
отображается для выполнения пользовательской команды:FPScratchy
которая, в свою очередь, вызывает внешний скриптack_find
.nmap <ESC>h :FPScratchy "ack_find"<CR>
Цель этой команды состоит в том, чтобы создать "временное окно", содержащее список файлов, сгенерированный внешней командой, и выполнить некоторые переназначения для навигации:
<CR>
в обычном режиме, чтобы открыть файл под курсором,<CR>
в визуальном режиме, чтобы добавьте выбранные файлы в локальный арглист и нажмите<Esc><CR>
в обычном режиме, чтобы открыть файл под курсором в разделенном окне.function! FPScratchy(...) call call(function("Scratchy"), a:000) setlocal cursorline nmap <buffer> <CR> 0gf vmap <buffer> <CR> :Lines2arglocal<CR> nmap <buffer> <ESC><CR> 0<c-w>f<c-w>w endfunction command -nargs=* FPScratchy :call FPScratchy(<args>) function! Lines2arglocal() range let lines = map(range(a:firstline, a:lastline), 'getline(v:val)') execute "arglocal " . join(lines, " ") endfunction command -range Lines2arglocal <line1>,<line2>:call Lines2arglocal()
Автор изменил свой метод на основе
find
на несколько болееack
метод, основанный на подтверждении , несколько лет назад . У нас нет средств узнать, что он использовал ежедневно, но мы можем предположить, что это было просто:$ find . -type f
Есть несколько способов сделать это. Чтобы получить вывод этой команды в буфер Vim, откройте Vim и выполните
:r!find . type f
Другим способом сделать это, используя vim в терминале, было бы выполнить следующее в приглашении оболочки.
$ find . type f | vim -
Я обычно помещаю курсор на желаемое имя файла и тип
<C-W>f
где <CW> означает Ctrl-W. Это откроет файл в новом окне, что устраняет проблему попытки открыть новый файл в измененном буфере.
Другой подход заключается в том, чтобы сначала выполнить
:set nomodified
Затем введите
gf
Это откроет новый файл в буфере / окне, содержащем список файлов.
Еще один способ - снова навести курсор на нужное имя файла и выполнить
:e! <C-R>f<CR>
где <CR> означает Ctrl-R, а <CR> означает клавишу Enter. Комбинация <CR> f развернется до имени файла под курсором.
Увидеть
:help :r!
:help CTRL-W_f
:help gf
:help 'modified'
:help c_CTRL-R_f