NERDTree: открыть файл в текущем окне?

2452
Thanatos

Когда я открываю файл в буфере NERDTree, который был создан путем открытия каталога, когда я нажимаю <CR>, он открывает выбранный файл в текущем окне, если файл не открыт в другом окне, в этом случае вместо этого он перемещает курсор в это окно (изменение вкладок, если требуется).

В любом случае, нужно ли NERDTree открывать файл в буфере, в котором находится NERDTree?

(По сути, я хочу использовать NERDTree в качестве замены netrw. В этом аспекте поведение NERDTree отличается от поведения netrw; я хотел бы, чтобы оно имитировало netrw здесь.)

3
Весь смысл NERDTree в том, что он не работает как netrw. Если вы хотите netrw, используйте netrw. romainl 10 лет назад 0
@romainl: И все же одной из его особенностей является замена сети. Я не хочу, чтобы это работало так, как netrw - * всякое * уважение: это победило бы; только в этом одном случае. NERDTree по умолчанию делает много вещей, которые я предпочитаю, поэтому я использую это, а не netrw. В этом конкретном случае я пытаюсь просто открыть другой файл рядом (но он * случайно * открывается на другой вкладке), но, возможно, я не помню имя файла. Я разделил окно, сделал `: e%: h` и нашел файл. Теперь я хочу открыть его здесь. Thanatos 10 лет назад 0
NERDTree не имеет функции, которую вы запрашиваете, потому что она специально разработана, чтобы * не * работать таким образом. Это * боковая панель *, а не универсальный файловый браузер, такой как netrw. «Путь NERDTree» будет следующим: 1. вызвать NERDTree, 2. открыть файл под курсором в новом vsplit с `s` и автоматически закрыть NERDTree с помощью` let NERDTreeQuitOnOpen = 1`. romainl 10 лет назад 2

1 ответ на вопрос

2
mMontu

It seems you are looking for the option NERDTreeHijackNetrw, as explained in the NERDTree documentation:

If set to 1, doing a :edit <some directory> will open up a "secondary" NERD tree instead of a netrw in the target window. Secondary NERD trees behaves slightly different from a regular trees in the following respects: 1. 'o' will open the selected file in the same window as the tree, replacing it. 2. you can have as many secondary tree as you want in the same tab. 

If you are looking for something beyond that you could achieve it based on the API offered by the plugin:

4. The NERD tree API *NERDTreeAPI* The NERD tree script allows you to add custom key mappings and menu items via a set of API calls. Any scripts that use this API should be placed in ~/.vim/nerdtree_plugin/ (*nix) or ~/vimfiles/nerdtree_plugin (windows). The script exposes some prototype objects that can be used to manipulate the tree and/or get information from it: g:NERDTreePath g:NERDTreeDirNode g:NERDTreeFileNode g:NERDTreeBookmark See the code/comments in NERD_tree.vim to find how to use these objects. The following code conventions are used: * class members start with a capital letter * instance members start with a lower case letter * private members start with an underscore See this blog post for more details: http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html 

One possible solution is to create a mapping that retrieve the path from the file under the cursor and use the :edit on it.