2013-02-02 7 views
5

Stellen Sie sich vor, ich habe :Vex nach dem Starten von vim. Ich möchte in der Lage sein, t zu drücken und die Registerkarten an das gegenüberliegende Fenster anstelle des Netrw-Fensters angehängt zu haben. Ist das möglich?Netrw Dateien in Registerkarten in gegenüberliegenden vertikalen Fenster öffnen

Wenn ich P drücke, kann ich die Datei in das geteilte Fenster öffnen, aber ich möchte die Dateien im vertikalen Split durchblättern, während mein Netrw-Fenster sichtbar ist - genau wie Sublime oder Komodo.

Möglich?

Und ja, ich habe :h netrw gereinigt!

Antwort

2

Sie scheinen Vims "Registerkarten" mit den "Registerkarten" zu verwechseln, die Sie in praktisch jedem anderen Programm finden können.

Im Gegensatz zu anderen Implementierungen sind die Registerkarten von Vim nicht an einen Puffer gebunden. In Vim verhalten sich "Tabs" wie "Arbeitsbereiche": Sie sollen ein oder mehrere Fenster zusammenhalten. Diese Fenster können jeden Puffer anzeigen und Sie können sehr gut mit dem gleichen Puffer in mehreren Fenstern in mehreren Registerkarten angezeigt werden!

In diesem Sinne wäre es sehr falsch, sie zu verwenden, wie Sie möchten. "Tabs" repräsentieren keine Dateien und springt zu einem anderen "Tab" entspricht nicht springt zu einer anderen Datei überhaupt.

Das von :Vex erstellte Fenster ist ein normales Fenster. Wie alle anderen Fenster ist es in einem "Tab" enthalten und kann nicht außerhalb eines "Tabs" leben. Und Sie können keine "Tabs" innerhalb von Fenstern haben.

Also, im Grunde, was Sie fragen, ist unmöglich.

Wenn Sie auf einem Mac und diese „andere-Editor-like-Funktion“ ist wirklich wichtig für Sie (wichtiger als, sagen wir, umarmen die Vim Art und Weise), könnten Sie this MacVim fork versuchen, dass eine „regelmäßige fügt "Datei-Explorer außerhalb der Puffer/Fenster/Tab Trio. Sie könnten auch versuchen PIDA, die versucht, eine IDE um Vim zu bauen; einschließlich eines separaten Datei-Explorers.

1

Wie gesagt, Registerkarten sind keine Dateien (oder Puffer). Also, wenn ich deine Frage neu interpretiere, um zu bedeuten: "Ich möchte t drücken und Dateien im gegenüberliegenden Fenster erscheinen lassen ...". Dann empfehle ich zu lesen: help netrw-C. Wenn Sie wirklich "append" meinen und nicht "auftauchen", dann ist das komplizierter und bevor ich die Mühe aufbringe herauszufinden, wie das geht, würde ich gerne wissen, dass es das ist, was Sie wirklich meinten. Das neuste netrw (ab heute, das ist v153f) hat zusätzliche Optionen, die in dieser Hilfereferenz oben erwähnt sind.

7

Fast hat es mit einigen .vimrc Remaps und Optionen.

Es sieht aus wie dieser http://i.imgur.com/rUf19SF.png

Verbrauch:

  1. Lauf vim.
  2. Treffer shift enter. Dies wird als Sidebar (ein kleines geteiltes Fenster auf der rechten Seite) geöffnet und fokussiert.
  3. Durchsuchen Sie wie üblich und drücken Sie enter, um eine Datei zu öffnen. Dies öffnet es standardmäßig im linken Fenster und fokussiert es.
  4. Treffer control-w control-w. Das wird sich wieder auf netrw konzentrieren.
  5. Durchsuchen wie üblich, aber dieses Mal schlug control-enter eine Datei zu öffnen. Dadurch wird es in einer neuen Registerkarte geöffnet, die auch die Seitenleiste netrw enthält.

Die .vimrc config:

" netrw magic 
" enable mouse usage. makes it easier to browse multiple tabs 
set mouse=a 
" hide netrw top message 
let g:netrw_banner=0 
" tree listing by default 
let g:netrw_liststyle=3 
" hide vim swap files 
let g:netrw_list_hide='.*\.swp$' 
" open files in left window by default 
let g:netrw_chgwin=1 
" remap shift-enter to fire up the sidebar 
nnoremap <silent> <S-CR> :rightbelow 20vs<CR>:e .<CR> 
" the same remap as above - may be necessary in some distros 
nnoremap <silent> <C-M> :rightbelow 20vs<CR>:e .<CR> 
" remap control-enter to open files in new tab 
nmap <silent> <C-CR> t :rightbelow 20vs<CR>:e .<CR>:wincmd h<CR> 
" the same remap as above - may be necessary in some distros 
nmap <silent> <NL> t :rightbelow 20vs<CR>:e .<CR>:wincmd h<CR> 

Caveats:

Die netrw "Sidebar" in jedem Register unabhängig ist, kann nicht sein, das aktuelle Verzeichnis in einem Register Bedeutung der Gleiches in einer anderen Registerkarte. Vorschläge? Ich dachte daran, den netrw-Puffer in jedem "sidebar" -Fenster zu verwenden, aber netrw verwendet immer einen neuen Puffer, wenn man Verzeichnisse wechselt.

+0

Ist es möglich, diese Sidebar bei vim load zu öffnen? 'autocmd VimEnter *: Vexplore' gibt verschiedene netrw. – Lanti

+2

@Lanti ja, spalte einfach den autocmd über zwei Zeilen 'autocmd VimEnter * rightbelow 20vs' und dann' autocmd VimEnter * e' direkt darunter – unione

+0

Danke, upvoted! Funktioniert super! Dieser Code ist eine der nettesten Lösungen! 1. Eine weitere Sache, die mich stört, ist, wenn ich eine neue Datei in einem neuen Tab öffne, öffnet sich immer noch ein Netrw. Ist es möglich, bei jedem neuen Tab, wenn Sie eine Datei mit ENTER oder STRG + EINGABE öffnen, ein neues netrw zu öffnen? 2. Ist es möglich, eine Verknüpfung zu erstellen, um eine neue Datei im Hintergrund zu öffnen? Es wäre nützlich, im Hintergrund, ohne netrw, sehr schnelle Dateien zu öffnen. – Lanti