Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于文件名在vim中快速搜索特定窗口_Vim - Fatal编程技术网

基于文件名在vim中快速搜索特定窗口

基于文件名在vim中快速搜索特定窗口,vim,Vim,很多时候,我使用split和vsplit在vim中打开了大量文件。在这种情况下,是否有某种方法可以(通过文件名)搜索打开了特定文件的窗口 我正在寻找类似于tmux find window的功能,我们可以通过在窗口的滚动缓冲区中搜索文本来激活窗口。但是,在vim的情况下,我希望能够通过搜索文件名来设置窗口的焦点。您可以使用buffer命令并附加文件名的开头-然后您将能够用tab键完成全名。为了使选项卡完成更有用(IMO),您可以将以下设置添加到vimrc文件中: " first tab compl

很多时候,我使用
split
vsplit
在vim中打开了大量文件。在这种情况下,是否有某种方法可以(通过文件名)搜索打开了特定文件的窗口


我正在寻找类似于
tmux find window
的功能,我们可以通过在窗口的滚动缓冲区中搜索文本来激活窗口。但是,在vim的情况下,我希望能够通过搜索文件名来设置窗口的焦点。

您可以使用
buffer
命令并附加文件名的开头-然后您将能够用tab键完成全名。为了使选项卡完成更有用(IMO),您可以将以下设置添加到
vimrc
文件中:

" first tab completed to the longest common match, or full match,
" second tab completed to show list of all matches,
" third tab starts to cycle through matches
set wildmode=longest,list,full
如果有3个缓冲区打开-
install.sh
readme.md
app.js
-

:b in
将完成命令
:b install.sh
-按enter键将打开包含
install.sh
文件的缓冲区。如果您的搜索词有多个匹配项,请继续点击TAB以循环浏览所有结果


有关更多信息,请签出
:帮助缓冲区

首先,在拆分中打开多个文件可以使文件编辑更轻松。但是,如果在split中打开“大量文件”。。。。。我不知道是什么原因让你这么做。如果您想批量处理文件,可以考虑使用sed/awk/

无论如何,您可以在vim中执行这个cmd行,您给出文件名,这个cmd将带您到包含buf的窗口

:call win_gotoid(bufwinid('YourFileName'))

这将在当前窗口中打开缓冲区。如果我正确理解了OP,他想切换到已经显示缓冲区的窗口。@DevSolar是对的。我希望能够切换到该窗口,而不是替换当前窗口。@Amit-ah-我明白了。我想折衷的办法是将所需的缓冲区作为一个拆分打开(
:sb in
)-但是既然您已经说过要打开多个拆分,我认为这样做不会更好。我将这个答案留在这里,因为它可能会帮助其他人回答类似的问题。@DevSolar-事实上你是对的。谢谢你的反馈!我认为这是不可能的开箱即用。它会变得模糊,因为你可以有多个窗口显示同一个文件——然后呢?(另外,请注意存在。注意:
win_gotoid
是在Vim 7.4.1557中引入的。如果您有一个较旧的版本,您可以通过使用
:drop
来获得这种行为。例如
:drop foo.txt
。使用
:drop
的问题是,如果文件当前未打开,那么它将以当前的方式打开文件。)更多信息,请参见
:h:drop
。我正在运行7.4.1689
$vim--version | head-2 vim-Vi改进版7.4(2013年8月10日,2016年6月16日编译10:50:38)包含的修补程序:1-1689
。但它没有
bufwinid
功能。也没有
drop
命令。我想我必须尝试使用更高版本的
vim