Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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,假设我在我的主目录中。我打开了一个存在于某些深层嵌套目录结构中的文件: vim /some/really/long/path/file.txt 现在,在vim中,我想用同一个长位置的另一个文件开始垂直拆分(但我不想将当前目录更改为该路径,我仍然希望在主目录中) 一个门外汉(像我一样)会这样做: :vsp /some/really/long/path/file2.txt 但我想从你们所有的VIM天才那里了解一下,有没有更简单的方法 同样的,如果我已经打开了多个文件,它们驻留在不同的路径中,那么

假设我在我的主目录中。我打开了一个存在于某些深层嵌套目录结构中的文件:

vim /some/really/long/path/file.txt
现在,在vim中,我想用同一个长位置的另一个文件开始垂直拆分(但我不想将当前目录更改为该路径,我仍然希望在主目录中)

一个门外汉(像我一样)会这样做:

:vsp /some/really/long/path/file2.txt
但我想从你们所有的VIM天才那里了解一下,有没有更简单的方法


同样的,如果我已经打开了多个文件,它们驻留在不同的路径中,那么VIM能自动为所有位置分配某种内部变量吗?然后,当我想用其中一个位置的文件启动一个新的VSP或SP时,我只需使用这些内部变量?

编辑同一目录中的另一个文件:

:vs %<Tab><C-w><C-w><C-w>file2<Tab>
:vs%file2
使用映射:

nnoremap <key> :vs <C-R>=expand('%:p:h')<CR>
nnoremap:vs=expand('%:p:h')
试试这个:

:vs %:p:h/otherfile
as
%:p:h
提供当前文件的路径。
有关更多信息,请参见
:help%:p

如果您喜欢更多的导航而不是键入命令,一个方便的选项是使用嵌入的Explore命令,该命令打开一个窗口,其中包含当前缓冲区中文件目录中的列表文件。然后,您可以使用光标导航,并在垂直分割要打开的文件上方按v

一种方便的方法是映射Explore命令,如:

" open embedded file system navigator
map <leader>\ :Explore<cr>
“打开嵌入式文件系统导航器”
地图\:探索
\导航到该文件,然后按v


对于某些版本的vim,在按下v后,Explore窗口保持打开状态——在这种情况下,如果您想避免关闭Explore窗口的额外负担,可以首先使用:vsp进行垂直拆分,调用:Expore,然后按Enter打开所需的文件

如果您希望从同一位置打开文件,您可以执行:cd/long/path/to/the/files/you/want,然后只执行:e file1、:e file2等操作。是的,我知道cd命令。我只是想知道VIM是否维护了一个可访问的已打开文件的位置列表,我可以在其中循环,而不必执行“cd”“或者每次都键入完整路径。这太完美了。在发布我的问题后,我在vim.wikia.com上也找到了同样的答案。将此响应标记为答案,因为它准确地解释了%:p:h thingy:)的情况