Редактор Vim, как я могу сохранить файл в другом каталоге

Я новичок в мире ubuntu и редактора vim.
Мой вопрос: как я могу сохранить файл на моем локальном хосте с помощью vim?
Когда я использую команду : w Я сохраняю файл, но где? И как мне изменить расположение файла на /var/www/?


Вы можете ввести : pwd для отображения текущего рабочего каталога. Здесь будет сохранен ваш файл, если просто ввести : w filename . Вы можете изменить рабочий каталог с помощью : cd path/to/new/directory . Или вы можете ввести полный путь к месту, где вы хотите сохранить файл, с помощью команды записи, например, : w/var/www/filename .


18

w Команда vim поддерживает в качестве параметра имя файла, которое может содержать путь, поэтому

 : w/var/www/filename  

должен работать, если у вас есть разрешения на запись в этот каталог.
Вы также можете использовать завершение табуляции для создания имени пути.

Пустая команда : w работает, только если вы запустили vim , уже дав ему имя файла.

Улучшите этот ответ
ответил 17 августа 2013 в 14:15
  • 1
    Да, когда я использую команду: w, я уже дал имя файлу … Я попытался сохраните файл в мой каталог localhost, используя совет, который вы мне дали, и это сработало! Большое спасибо, если однажды я смогу вам помочь, я не колеблясь! — berga007 17 авг. ’13 в 14:25
добавить комментарий |

Команда w vim поддерживает в качестве параметра имя файла, которое может содержать путь, поэтому

 : w/var/www/filename  

должно работать, если у вас есть права на запись в этот каталог.
Вы также можете использовать завершение табуляции для создания имени пути.

Простая команда : w работает, только если вы запустили vim уже давая ему имя файла.


11

Навигация в каталог, в который вы хотите сохранить новый файл, откройте файл, который хотите отредактировать, и затем используйте

Esc : sav newfilename или Esc : w newfilename Это должно сработать для вас.

Для получения дополнительных советов по vim эта шпаргалка может оказаться полезной.

Отредактируйте, как требуется.

: sav сохраняет файл под новым именем e и открывает новый файл в Vim.

Примечание :: sav не закроет начальный буфер, он скроет его. По умолчанию скрытые буферы выгружаются.

: w сохранить файл с новым именем, но оставить оригинал открытым для редактирования.

Изменить источник: https://stackoverflow.com/questions/4980168/how-to-save-as-a-new-file-and-keep-working-on-the-original-one-in-vim

Улучшите этот ответ
отредактировано 23 мая 2017 в 12:39
Сообщество ♦
1
ответил 10 ноября ’16 в 22:45
  • Вероятно, вам следует прямо в ответе объяснить разницу между : sav и : w , это очень полезно знать. — Matteo Italia 11 нояб., В 8:55
  • 1
    @MatteoItalia хорошее замечание. Готово. — Elder Geek 11 нояб., В 12:56
  • Отлично, проголосовали за! — Matteo Italia 11 ноя. ’16 в 13:06
добавить комментарий |

Перейдите в каталог, в котором вы хотите сохранить новый файл, откройте файл, который хотите отредактировать, и затем используйте

Esc : sav newfilename или Esc : w newfilename Это должно сработать для вас.

Дополнительные советы по vim могут оказаться полезными для вас.

Отредактируйте по запросу.

: sav сохраняет файл с новым именем и открывает новый файл в Vim.

Примечание :: sav не закроет начальный буфер, а скроет его. По умолчанию скрытые буферы выгружаются.

: w сохранить файл с новым именем, но оставить оригинал открытым для редактирования.

Изменить источник: https://stackoverflow.com/questions/4980168/how-to-save-as-a-new-file-and-keep-working-on-the-original-one-in-vim


7

Внутри Vim, независимо от того, где файл сейчас сохранен, вы можете указать путь в новое место, где вы хотите его сохранить. Например, чтобы сохранить файл на рабочем столе:

нажмите esc , чтобы перейти в обычный режим, затем введите

 : w ~/Desktop/filename  

Это работает для любого пути, где у вас есть разрешение на запись в каталог. Если вы хотите сохранить место, где у вас нет разрешения на запись, вы можете сделать это:

 : w! Sudo tee/path/to/my/filename  

Улучшите это ответ
ответ дан 10 ноя ’16 в 22:50
комментировать |

Внутри Vim, независимо от того, где файл в настоящее время сохранен, вы можете указать путь к новому месту, где вы хотите его сохранить. Например, чтобы сохранить файл на рабочем столе:

нажмите esc для перехода в нормальный режим, затем введите

 : w ~/Desktop/filename  

Это работает для любого пути, по которому у вас есть разрешение на запись в каталог. Если вы хотите сохранить место, где у вас нет разрешения на запись, вы можете сделать это:

 : w! Sudo tee/path/to/my/filename  

6

Я думаю, вы хотите попробовать что-то вроде этого. (не забудьте двойную косую черту в конце.)

 : w/var/www//%: t  

Улучшить этот ответ
ответ дан 17 августа 2013 в 17:17
  • Да, я пробовал что-то подобное, и это сработало. Спасибо, berga007, 17 августа 2013, 14:35
  • 1
    @ berga007, пожалуйста, не публикуйте комментарий «спасибо», вместо этого примите ответ. — guntbert 17 авг. ’13 в 15:44
добавить комментарий |

Думаю, вы хотите попробовать что-то подобное. (не забудьте двойную косую черту в конце.)

 : w/var/www//%: t  

3

Если вы создали новый файл с помощью Vim, нажав последовательность клавиш Esc : w q Enter сохранит файл в том месте, где вы запустили Vim. Например, если вы были в/home/$ USER, файл будет создан в этом каталоге. Самый простой способ — запустить vim с помощью:

  vim myFile.txt  

Это создаст новый файл или перезапишет файл с именем myFile.txt в текущем месте.

Улучшите этот ответ
отредактировано 10 ноя 2016, 22:45
Nick Weinberg
4,23544 золотых знака2121 серебряных знаков2929 бронзовых знаков
ответил 10 нояб. в 22:38
добавить комментарий |

Если вы создали новый файл с помощью Vim, нажав последовательность клавиш Esc : w q Enter сохранит файл в текущем месте, где вы запустили Vim. Например, если вы были в/home/$ USER, файл будет создан в этом каталоге. Самый простой способ — запустить vim с помощью:

  vim myFile.txt  

. Это создаст новый файл или перезапишет файл с именем myFile.txt в текущем местоположении.


2

На вашей панели запуска второй значок — это изображение картотеки. Это называется Nautilus (файловый менеджер Ubuntu).

Выберите Nautilus, и ваш домашний каталог должен открыться. Вы должны увидеть там свой файл.

Щелкните файл правой кнопкой мыши и выберите «Копировать». Откройте электронную почту, создайте новое сообщение, нажмите на тело сообщения. Затем щелкните правой кнопкой мыши и на этот раз выберите «Вставить».

Эти инструкции работают для Ubuntu 14.04 и 16.04, но я не знаю, включает ли 12.04 Nautilus.

Улучшить этот ответ
ответ дан 10 ноя 2016, в 22:46
  • 2
    12.04 включает Nautilus. См. Здесь: packages.ubuntu.com/search?keywords=nautilus — wjandrea, 11 ноя 2016, 18:47
  • 4
    -1 Этот ответ не имеет ничего общего с Vim. Думаю, вы правильно ответили не на тот вопрос. — wjandrea 11 ноя 2016, в 06:49
  • @wjandrea В то время, когда я писал это на своем телефоне, у OP был вопрос, состоящий из нескольких частей, «или, возможно, отправьте его мне по электронной почте». Этот ответ сообщает OP, как обрабатывать электронную почту в вопросе. Спасибо за комментарий, почему вы проголосовали против. Не все проявляют такую ​​любезность. — WinEunuuchs2Unix 11 ноя 2016, 11:33
добавить комментарий |

Второй значок на панели запуска представляет собой изображение картотеки. Это называется Nautilus (файловый менеджер Ubuntu).

Выберите Nautilus, и ваш домашний каталог должен открыться. Вы должны увидеть там свой файл.

Щелкните файл правой кнопкой мыши и выберите «Копировать». Откройте электронную почту, создайте новое сообщение, нажмите на тело сообщения. Затем щелкните правой кнопкой мыши и на этот раз выберите «Вставить».

Эти инструкции работают для Ubuntu 14.04 и 16.04, но я не знаю, включает ли 12.04 Nautilus.



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

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

Есть ли способ заставить Vim автоматически сохранять наши файлы через определенный интервал?


Встроенной опции нет, хотя : help 'autosave' (в todo.txt) относится к описанию того, что такое вариант может подойти.

Один из возможных способов реализовать это — использовать событие автокоманды CursorHold . Это событие запускается, когда пользователь не нажимал клавишу в течение 'updatetime' миллисекунд.

  autocmd CursorHold * update   

Команда : update сохраняет буфер, только если он был изменен. Если вы также хотите, чтобы это происходило при активном режиме вставки, в список событий можно добавить CursorHoldI .

  autocmd CursorHold, CursorHoldI *  update  

Другой альтернативой является опция 'autowrite' , которая сохраняет буфер перед выполнением внешней команды (полезно для сохранения перед запуском : make ) или переключение на другой буфер.


12

В Vim есть функция автосохранения, но он сохраняет ее в файл «восстановления».

Когда вы редактируете документ, например MyFile.txt vim создаст файл восстановления .MyFile.txt.swp . Если ваша система выйдет из строя или ваш сеанс прекратится, вы можете повторно подключиться и восстановиться с того места, где вы остановились, набрав:

  vim -r MyFile.  txt  

Это откроет файл для редактирования и восстановит последние внесенные в него изменения.

Затем вы можете сохранить восстановленную версию как обычно way : w .

К сожалению, когда вы выйдете из vim, он оставит .MyFile.txt.swp вокруг, и вам нужно удалить его вручную:

  rm .MyFile.txt. swp  

См. справочную страницу «Восстановление», а также главу 11

Улучшите этот ответ
ответил 03 февраля 2015, 22:41
  • 1
    При правильном выходе из Vim (то есть с помощью : wq или : q! или ZZ или т. д.) файлы подкачки должны удаляться автоматически. — Doorknob 03 фев. 2015, в 22:52
  • 4
    @Doorknob не при выходе после восстановления … 😉 — rolfl 03 фев 2015, в 22:52
добавить комментарий |

В Vim есть функция автосохранения, но она сохраняется в файле «восстановления».

Когда вы редактируете документ, например MyFile.txt vim создаст файл восстановления .MyFile.txt.swp . Если ваша система выйдет из строя или ваш сеанс прекратится, вы можете повторно подключиться и восстановиться с того места, где вы остановились, набрав:

  vim -r MyFile.  txt  

Это откроет файл для редактирования и восстановит последние внесенные в него изменения.

Затем вы можете сохранить восстановленную версию как обычно way : w .

К сожалению, когда вы выйдете из vim, он оставит .MyFile.txt.swp вокруг, и вам нужно удалить его вручную:

  rm .MyFile.txt.swp  

См. справочную страницу «Восстановление», а также главу 11


10

Я сделал плагин vim-autosave который использует функцию таймеров Vim 8 для периодического сохранения ваших буферов.

Улучшите этот ответ
13 сен. ’16 в 07:45
  • Ого, плагины Vim 8 уже выходят. Отлично выглядит, Кристиан! — Thameera 13 сен 2016, в 18:18
  • Спасибо, Кристиан. Это выглядит многообещающе. Интересно, поддерживает ли плагин новые/несохраненные файлы. Я не могу найти ответ в документации к плагину. Вчера вечером мой компьютер решил перезагрузиться, и у меня было несколько заметок о новых буферах. Vim не создавал и не сохранял файлы swp. — JAponte, 14 октября 2016 г., 17:53
  • Нет, в настоящее время он не поддерживает новые/несохраненные файлы. Если вы этого хотите, продолжайте и создайте забавную проблему. — Кристиан Брабандт, 14 окт., 16:10
добавить комментарий |

Я сделал плагин vim-autosave, который использует функцию таймеров Vim 8 для периодического сохранения ваших буферов.


2

Как указывали другие, vim имеет файл подкачки (.swp), который будет создан там, где находится ваш исходный файл, но в вашем файле .vimrc вы можете установить каталог .swp.

Вам нужно будет создать каталог с помощью mkdir , а затем установить .vimrc в это место.

  set backup "сделать резервную копию набора файлов backupdir = ~/.vim-tmp, ~/.tmp, ~/tmp,/var/tmp,/tmp  

Улучшить этот ответ
отредактировал 15 июня ’15 в 2:03
ответил 14 июня 2015, 20:36
добавить комментарий |

Как указывали другие, vim имеет файл подкачки (.swp), который будет создан там, где когда-либо был ваш исходный файл есть, но в вашем файле .vimrc вы можете установить каталог .swp.

Вам нужно будет создать каталог с помощью mkdir , а затем установить ваш .vimrc в это место.

  set backup "сделать резервную копию набора файлов backupdir = ~/.vim-tmp, ~/.tmp, ~/tmp,/var/tmp, /tmp  

2

I заставляю мой Vim сохранять все каждый раз при потере фокуса.

  autocmd FocusLost  silent!  стена  

Мои шаблоны довольно длинные, и я использую их в нескольких автокомандах, но для полноты картины это выглядит так:

   if exists (': keeppatterns') let s: keeppatterns = 'keeppatterns' else let s: keeppatterns = '' endifaugroup AutoSaveGroup ": файл-шаблон справки содержит некоторую информацию," но некоторые из них похоронены в разделе PATTERNS файла usr_40  .txt let s: autoPattern = "*. {c, h, [ch] pp, [acjt] s, inl, cg, cgfx, fx, py, bat, cmd, jam, vim, yml, yaml, vsprops, erb  , rb, html, htm}, SCons *, * vimrc "autocmd!  выполнить «autocmd FocusLost» s: autoPattern «silent! wall» выполнить «autocmd BufWritePre» s: autoPattern s: keeppatterns.  'call FixFormatting (expand (""))' выполнить "autocmd FileChangedRO" s: autoPattern "silent! p4 edit%: p" выполнить "autocmd FileChangedRO" s: autoPattern "write!"  autocmd FocusLost *. txt тихо!  wallaugroup END  

Улучшите этот ответ
ответил 12 сен 2016 в 20:09
добавить комментарий |

Я заставляю свой Vim сохранять все каждый раз, когда теряется фокус.

  autocmd FocusLost   молчание!  стена  

Мои шаблоны довольно длинные, и я использую их в нескольких автокомандах, но для полноты картины это выглядит так:

   if exists (': keeppatterns') let s: keeppatterns = 'keeppatterns' else let s: keeppatterns = '' endifaugroup AutoSaveGroup ": файл-шаблон справки содержит некоторую информацию," но некоторые из них похоронены в разделе PATTERNS файла usr_40  .txt let s: autoPattern = "*. {c, h, [ch] pp, [acjt] s, inl, cg, cgfx, fx, py, bat, cmd, jam, vim, yml, yaml, vsprops, erb  , rb, html, htm}, SCons *, * vimrc "autocmd!  выполнить «autocmd FocusLost» s: autoPattern «silent! wall» выполнить «autocmd BufWritePre» s: autoPattern s: keeppatterns.  'call FixFormatting (expand (""))' выполнить "autocmd FileChangedRO" s: autoPattern "silent! p4 edit%: p" выполнить "autocmd FileChangedRO" s: autoPattern "write!"  autocmd FocusLost * .txt тихо!  wallaugroup END  

1

Плагин vim-workspace имеет довольно настраиваемую функцию автоматического сохранения, которая может удовлетворить ваши потребности. По умолчанию он включает автосохранение во время сеанса рабочей области (его основная функция), но вы можете настроить его на всегда автосохранение, если это все, что вы ищете ( let g: workspace_autosave_always = 1 ) .

Улучшите это ответ
ответ дан

07 фев. >

добавить комментарий |

Плагин vim-workspace имеет довольно настраиваемую функцию автоматического сохранения, которая может удовлетворить ваши потребности. По умолчанию он включает автосохранение во время сеанса рабочей области (его основная функция), но вы можете настроить его на всегда автосохранение, если это все, что вы ищете ( let g: workspace_autosave_always = 1 ) .


1

Попытаться сохранить буфер всякий раз, когда текст изменен:

  autocmd TextChanged, TextChangedI  тихая запись  

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

Источник

Улучшите этот ответ
ответил 19 апр. ’19 в 11:41
добавить комментарий |

Попытайтесь сохранить буфер при изменении текста:

  autocmd TextChanged, TextChangedI   тихая запись  

У меня это работает.

Source


1

Поместите это на свой vimrc:

  "" ""  "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "  "" "" "" "" "" => vim-autosave "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "  "" "" "" "" "" "" "" "" "" "" "" "" "" "Сохранить при потере фокуса/выйти из autocmd FocusLost, VimLeavePre * silent!  w "Кроме того, сохраняйте раз в минуту, если есть измененияlet g: autosave_seconds = 60 au BufRead, BufNewFile * let b: start_time = localtime () au CursorHold * silent! call UpdateFile () function! UpdateFile () if ((localtime ()  - b: start_time)> = g: autosave_seconds) update let b: start_time = localtime () endifendfunctionau BufWritePre * let b: start_time = localtime ()  

Source

Улучшить этот ответ
отредактировано 6 ноября ’20 в 18:21
ответил 06 нояб. в 15:07
  • 1
    Добро пожаловать в Vi и Vim! Этот ответ был бы сильнее с некоторыми пояснениями — Д. Бен Нобл ♦ 06 ноя ’20 в 16:23
  • Этот код сохранит ваши буферы при потере фокус/выход. Кроме того, экономьте один раз в минуту, если есть изменения. Вы можете настроить интервал автосохранения, отредактировав константу autosave_seconds. — Адриан Лопес, 6 ноя., 16:44
  • Используйте кнопку редактирования, чтобы добавить дополнительную информацию — D. Бен Нобл ♦ 06 ноя., 20:45
добавить комментарий |

Поместите это на свой vimrc:

  "" "" "" ""  "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "  "" "" "" => vim-autosave "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "  "" "" "" "" "" "" "" "" "" "" "" "" Сохранить при потере фокуса/выйти из autocmd FocusLost, VimLeavePre * silent!  w "Также сохраняйте раз в минуту, если есть измененияlet g: autosave_seconds = 60 au BufRead, BufNewFile * let b: start_time = localtime () au CursorHold * silent! call UpdateFile () function! UpdateFile () if ((localtime ()  - b: start_time)> = g: autosave_seconds) update let b: start_time = localtime () endifendfunctionau BufWritePre * let b: start_time = localtime ()  

Source


0

Косвенным способом достижения автоматического резервного копирования является включение set undofile . Каждое изменение открытого файла сохраняется там, несколько уровней отмены, даже после закрытия файла и выхода из vim. Я считаю это очень практичным, лучше, чем автосохранение.

Улучшите этот ответ
ответил 7 ноября ’20 в 9: 36
добавить комментарий |

Косвенным способом достижения автоматического резервного копирования является включение set undofile . Каждое изменение открытого файла сохраняется там, на нескольких уровнях отмены, даже после закрытия файла и выхода из vim. Считаю это очень практичным, лучше, чем автосохранение.

Оцените статью
logicle.ru
Добавить комментарий