vim «модифицируемый» выключен


147

Попытка создать новый файл с деревом ботаников. Я нажимаю aклавишу, чтобы создать новый файл, и я получаю сообщение:

E21: Cannot make changes, 'Modifiable' is off

Я использую MacVim и Janus (почти из коробки)


2
К вашему сведению: mа затем aдобавить новый файл в NERDTree
Лейтон

Ответы:


233
:set ma

что коротко для

:set modifiable

сделает буфер модифицируемым. И

:set noma

делает обратное.


4
+1 к этому ответу. Google показывает эту страницу, когда вы ищете способ отключить изменяемый флаг в буфере.
Себастьян Гриньоли

Кто-нибудь знает, как мне ОТМЕНИТЬ то, что я удалил в NERDTree? как «дд», а затем я попытался «у», и ничего не происходит
betoharres

6
Я также должен был использовать :set buftype: " "для записи файла после модификации (впоследствии сообщение было Cannot write, 'buftype' option is set)
Julien Carsique

18

Я не знаком с NerdTree, но я предполагаю, что при вводе aв представление nerdtree это интерпретируется как «я хочу добавить что-то в буфер nerdtree», и этот буфер не может быть изменен.

Вы можете проверить этот ответ vim и расширение NERD Tree - добавив файл, который объясняет, как добавить файл с помощью Nerdtree.


10
До, это было м, а затем.
wesbos

1
Вот и все, проверяя справку для NERDTree, нет aсопоставления, которое заставит его попробовать добавить новый текст.
Сидил

3

Это сработало для меня:

:set buftype=
:w

что вы добавите после =?
CodeMonkey

Ничего. Это означает присвоить пустое значениеbuftype
mipmip

2

Ладно, это может быть не самый информированный ответ, так как у меня едва есть опыт работы с vim или linux, но я нашел решение моей проблемы, и он может помочь вам. Чтобы быть конкретным, моя проблема была двойной:

1) всякий раз, когда я пытался что-то редактировать в этом новом файле, я получал сообщение «Невозможно внести изменения», ошибка «Изменяемый» отключена и ...

2) после запуска: установите модифицируемый и пытаясь сохранить, я получил бы ошибку e382 «невозможно записать, установлен buftype. так что я не смог спасти.

После заливки множества бесполезной загадочной документации я понял это:

1) найдите каталог .vimviews, для меня это было в корне моего git-репозитория, сделайте

ls 

внутри него. я получил что-то вроде этого:

~=+www-halo=+test=+lib=+Halo=+Return2=+HeaderTest.php=
~=+www-halo=+test=+lib=+Halo=+Service=+LandmarkTest.php=
~=+www-halo=+test=+lib=+Halo=+Transaction=+AuthnetTest.php=

Что совершенно бесполезно для вас, поскольку у вас другая файловая структура. но поищите файл, который дает вам проблему. (о, кстати, это на самом деле имена файлов, что совершенно не очевидно, если посмотреть на них). найдите тот, у которого есть рассматриваемый файл, и удалите эту присоску: пример:

rm ~=+www-halo=+test=+lib=+Halo=+Return2=+HeaderTest.php=

Задача решена.


1
Эта проблема также возникла при работе с NerdTree. Это работало только после выхода из сеанса vim, вызвавшего проблему. Я предполагаю, что он продолжал сбрасывать это "представление".
Джон

2

Если вы хотите получить файл в NERDTree, вам нужно нажать «m» (для меню), затем «a». Простое введение «a» в буфер NERDTree будет интерпретироваться как «изменить буфер NERDTree». Добавление: ma сделает буфер NERDTree модифицируемым, но это не создаст новые файлы для вас, это приведет к противоречивой информации между тем, что отображает NERDTree, и вашей фактической иерархией файлов.


0

В случае, если кто-то еще столкнется с Google, проверьте, что вы не пытаетесь открыть каталог в vim, как я только что (d'oh)


1
Вы можете открыть каталоги в Vim. По умолчанию он запускает Netrw.
htmldrum

Например, вы можете выбрать файлы в каталоге: cw сделать некоторые изменения в их именах и сохранить их
Karolius

0

Для меня я спрятал изменения, которые включали каталог, который я тогда пытался создать файл в том каталоге, который я только что спрятал. NERDTree все еще показывал предварительно спрятанное дерево с этим режиссером. Использование mнесуществующего каталога приводит к изменяемой ошибке. Мне следовало обновить дерево, rчтобы увидеть, что его больше нет, и почему его нельзя изменить.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.