Как изменить разрешение файла изнутри vi

Вы не пытаетесь реализовать типичную разнородную модель контейнера Джошуа Блоха? В основном:

public class Favorites {
  private Map, Object> favorites =
    new HashMap, Object>();

  public  void setFavorite(Class klass, T thing) {
    favorites.put(klass, thing);
  }

  public  T getFavorite(Class klass) {
    return klass.cast(favorites.get(klass));
  }

  public static void main(String[] args) {
    Favorites f = new Favorites();
    f.setFavorite(String.class, "Java");
    f.setFavorite(Integer.class, 0xcafebabe);
    String s = f.getFavorite(String.class);
    int i = f.getFavorite(Integer.class);
  }
}
blockquote>

Из Эффективная Java (2-е издание) и это представление .

23
задан T Zengerink 12 January 2018 в 10:02
поделиться

6 ответов

Просто используйте

:!chmod +w %

в командном режиме. % будет заменено текущим именем файла.

53
ответ дан David Larochette 12 January 2018 в 10:02
поделиться
:!chmod <perms> <file>

и если vi все еще не хочет писать,

:se cpo-=W
1
ответ дан Kevin Panko 12 January 2018 в 10:02
поделиться

Если у вас есть права на запись в файл, вы можете просто использовать восклицательный знак, чтобы заставить его:

:w!

Если у вас нет прав и вам нужно сменить пользователя, но все же хотите записать в файл, иногда вы можете пойти что-то вроде

:w !sudo tee %
35
ответ дан Michael Krelin - hacker 12 January 2018 в 10:02
поделиться

После редактирования файла с помощью vim нажмите «esc», а затем «:». Затем введите следующую команду:

w !sudo tee %

Затем нажмите «Enter». Затем введите

:q!

, чтобы успешно выйти из редактора.

2
ответ дан Kasumi Gunasekara 12 January 2018 в 10:02
поделиться

Вы пробовали

!chmod +w %

% представляет текущее имя файла.

Вы также можете сопоставить ключ с этим, как Ctrl-W.

:map <C-w> :!chmod +w %<CR>

Обратите внимание, что вы нажимаете Ctrl-V Ctrl-M, чтобы получить <CR>

7
ответ дан Michael Krelin - hacker 12 January 2018 в 10:02
поделиться

Я знаю, что это старый пост, но в Vim Version8 была включена функция, с помощью которой вы можете изменять права доступа к файлам.

В соответствии с файлом version8.txt:

setfperm () устанавливает права доступа к файлу

Затем эту функцию можно вызвать с помощью вызов "команда в Vim.

Это делается следующим образом:

:call setfperm("file name","permissions")

Структура строки «permissions» принимает ту же форму, как описано в документации Vim:

getfperm ({fname }) getfperm () Результатом является строка, которая является разрешениями на чтение, запись и выполнение для данного файла {fname}. Если {fname} не существует или его каталог не может быть прочитан, возвращается пустая строка. Результат имеет вид «rwxrwxrwx», где каждая группа флагов «rwx» представляет, в свою очередь, разрешения владельца файла, группы, к которой принадлежит файл, и других пользователей. Если у пользователя нет данного разрешения, флаг для этого заменяется строкой "-". Пример:: echo getfperm ("/ etc / passwd") Надеемся (с точки зрения безопасности) отобразить строку "rw-r - r--" или даже "rw -------".

Минимальный пример:

:call setfperm("foo.txt","rwxrwxrwx")

Это добавляет разрешения на чтение, запись и выполнение файла "foo.txt" в текущем каталоге.

9
ответ дан David van Wyk 12 January 2018 в 10:02
поделиться