NERDTree Як відкрити файл і автоматично закрити буфер Explorer


10

Під час використання плагіна NERDTree поведінка за замовчуванням полягає у відкритті нового файлу та збереженні буфера NERDTree відкритим. Що я хочу зробити, це зберегти цю поведінку за замовчуванням, але також змінити її, коли я хочу, щоб буфер NERDTree був закритий після відкриття файлу.

Я знаю, що можу використовувати let NERDTreeQuitOnOpen=1для автоматичного закриття буфера NERDTree, коли відкриваю новий файл, але ця опція повністю перекриває поведінку за замовчуванням (що не те, що я хочу).

В ідеалі я хотів би знати, чи є вбудована функція в NERDTree робити те, що я хочу. (Я шукав, але не знайшов нічого подібного, тому я припускаю, що насправді його немає)

І якщо цього не існує, у мене було дві ідеї:

  • Спочатку один, щоб створити функцію , яка буде встановлювати NERDTreeQuitOnOpenна 1, відкрити файл , а потім знову встановити NERDTreeQuitOnOpenв 0.

  • Друге - створити таке відображення: map d<CR> <CR> :NERDTree <CR> :bd<CR>яке відкриває файл (перший <CR>), повертається до буфера NERDTree ( :NERDTree <CR>) і закриває цей буфер ( :bd <CR>). Я повинен вдосконалити його, щоб відображення існувало лише в буфері NERDTree, але я вважаю, що це досить некрасиве рішення, і я думаю, що це може бути покращено.

Яка ідея була б найкращою і чому? Або є ще кращий варіант?



@Peter: Дякую за ваш коментар, стаття є досить цікавою, і я, мабуть, спробую netrw та концепцію спліт-провідника. Я думаю, що я розумію перевагу того, що пояснено в статті, але проблема полягає в тому, що вона насправді не вирішує мою проблему, я просто радимо змінити інструмент, який я використовую. Я не проти змінити звички, але я хотів би спершу вирішити свою проблему, а потім спробувати новий інструмент :)
statox

Питання, пов’язані з відповіддю на SU: superuser.com/q/821720/334516 . Може, map d<cr> <cr>:NERDTreeClose<cr>для картографування?
muru

@muru: Дякую, ваше картографування працює чудово, і воно здається менш потворним, ніж моє :) Щодо питання щодо SU, я не впевнений, що це повністю пов'язано, оскільки він хоче відкрити файл у буфері NERDTree, тоді як я хочу відкрийте його в новому буфері, а потім закрийте буфер NERDTree: Він закінчується розділеним вікном, тоді як я хочу отримати 2 буфера не в розділеному вікні.
statox

Відповіді:


5

Оскільки, схоже, на це питання не виникає багато відповідей, я просто відповім на нього з пропозицією @muru, якою я користувався протягом тижня, перш ніж перейти до провідника netrw. (Звичайно, якщо з'явиться кращий варіант відповіді, я з радістю відзначу міну як прийняту і прийму нову)

Ідея полягає у використанні наступного картографування:

map d<cr> <cr>:NERDTreeClose<cr>

Що відкриває файл, як це робиться зазвичай, а потім викликає функцію, яка закриває буфер NERDTree незалежно від того, де знаходиться курсор.

EDIT: Нещодавно я перейшов на NERDTree і переробив своє рішення: відображення, яке я запропонував раніше, працювало, але, як воно існувало у кожному буфері, мені довелося двічі натискати dщоразу, коли я хотів видалити щось, що дуже дратує. (Можливо, я міг би змінити timeoutналаштування, але мені подобається те, як він наразі встановлений для мене, також я не хотів відображати їх на іншій комбінації клавіш)

Тому я замінив своє перше рішення на наступні рядки до мого .vimrc:

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

Таким чином, картографування створюється лише в NERDTreeбуферах, і воно не псується з моїм робочим процесом в інших буферах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.