在视频中观看我如何操作轨道他首先获取输出find . -type f
并将此列表用作常规 vim 文件进行搜索。一旦他在列表中找到此文件,他就可以在 vim 中打开它。这看起来非常有用,但他没有指定别名来执行此操作。有人可以给我同样的别名吗?
答案1
发生的事情可以从作者的点文件。警告!整个事情相当复杂(而且很聪明)。
这是
vim-
bash 命令: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
为基础的A几年前。我们无法知道他每天使用什么,但我们可以假设是简单的:$ find . -type f
答案2
有几种方法可以做到这一点。要将该命令的输出放入 Vim 缓冲区,请打开 Vim 并执行
:r!find . type f
另一种方法是使用终端中的 vim,在 shell 提示符下执行以下操作。
$ 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