ß
на самом деле лигатура ss
(на немецком языке). Кто-либо использующий таблица для преобразования Unicode или другие расширенные символы алфавита к "безопасным" символам для вещей как URL, вероятно, преобразует его в ss
.
Выполнение этого для URL довольно нормально. Например, я говорю на турецком языке, где у нас есть буквы, не найденные на английском языке такой как ö ü ı â ğ ç ş İ
. Эти символы не всегда безопасно использовать в URL, специальных полях формы, и т.д. В их месте, мы заменяем подобными символами такой как o u i a g c s I
. Обычно это сделано визуальным подобием, а не звуком, но случаем ß
слышимое подобие ss
делает это общим преобразованием.
Это составляет чистый убыток данных, но как безопасное представление URL или другого специального поля они работают, затем на самом сайте можно использовать реальные символы.
Почему gedit
сделал бы это преобразование вне меня. Это - ошибка.
Нет никакого пути к vim
знать заранее, что это - процесс прародителя (терминал) уничтожается так это также, обычно уничтожается в результате уничтожения родительских процессов.
Однако на большинстве установок по умолчанию vim
создаст a .swp
файл, названный в честь текущего отредактированного файла; например, MyPrecious.java.swp
. Этот файл должен содержать снимок файла MyPrecious.java
незадолго до vim
процесс был уничтожен. Если Вы не настроили vim
конкретно помещать их .swp
файлы в некотором другом каталоге, они должны находиться в том же каталоге как отредактированный файл, и можно легко восстановить работу редактирования.
Обратите внимание, что некоторые из этих файлов запускаются с точки .
таким образом, они невидимы, если Вы не используете ls -a
перечислять файлы в каталоге.
Рассмотрение проблемы от другого угла, screen
или tmux
позволит Вам сохранять свою оболочку, идущую независимо от Вашего терминала. При закрытии терминала, можно открыть новый и снова соединиться с исходной оболочкой. Vim будет все еще работать.
.zlogin
таким образом, это всегда запускается, когда я вхожу в оболочку. Никогда не терял окно с тех пор.
– Matthew Scharley
24.02.2012, 05:58
if
просто берет возвращаемые значения - Вы не должны делать своего окольного издания tmux
сопровождаемый путем проверки $?
, просто проверьте tmux
.
– Chris Down
25.02.2012, 23:54
vim
не имеет никакого контроля над тем, как GUI Вашего терминала обрабатывает WM_DELETE_WINDOW
. Вместо этого ищите установку в своем терминале, который управляет, как терминал действует при выяснении закрыться, когда он имеет оболочку с детьми.
Существует путь к Vim, чтобы знать, что терминал был закрыт: SIGHUP
сигнал.
Когда Вы закрываете терминал, SIGHUP
сигнал отправляется в процесс управления, который обычно является Вашей оболочкой. Ваша оболочка должна затем выйти, заставив Vim быть отправленной SIGHUP
сигнал. По умолчанию процессы просто завершаются, когда они получают SIGHUP
сигнал.
Я не знаком с Vim, но возможно он может быть настроен для сохранения всей работы прежде, чем выйти когда a SIGHUP
сигнал получен. В противном случае, возможно, можно установить оболочку trap
на SIGHUP
, возможно, в сочетании с рабочим Vim с nohup
, выполнить специальную команду, которая так или иначе заставляет Vim выходить более корректно, когда терминал закрывается.
Как другие заявили, энергия не может реагировать на такое событие. Но Вы могли бы рассмотреть одно из этих обходных решений:
gvim
вместо vim
, который может быть вызван из командной строки, также. Псевдоним мог бы помочь корректировке к переключателю (принимающий совместимую с ударом оболочку): alias vim=gvim
. Утверждение gvim как Ваш предпочтительный редактор могло бы помочь, также: export EDITOR=gvim
. Это работает только над локальной машиной, все же.tmux
или screen
) был уже упомянут. Это пришло ко мне после того, как я задал вопрос на другом форуме AskUbuntu: vim.desktop - изменения теряются при выходе из терминала и множество экспериментальных файлов *. Desktop
, демонстрирующих, что gnome-terminal
позволит убить vim
без предупреждения, даже если он запущен в оболочке и даже если до или после него были другие команды для bash
или gnome-terminal
для запуска.
«Интерактивная» оболочка ( bash -i
) казалась уверенной, что вызовет предупреждение GNOME при закрытии окна, основываясь на буквальном предупреждающем сообщении:
Закрыть этот терминал? Есть все еще процесс, работающий в этом терминале. Закрытие терминала убьет его.
, но добавление параметра -i
в bash при запуске из файла *. Desktop
остановило GNOME от открытия окна в моем тестировании (с Ubuntu 16.04 - gnome-terminal
3.18.3). Поэтому вместо этого я попытался вызвать интерактивную оболочку из сценария-оболочки, и это было полное решение:
/ usr / local / bin / vim-gnome-wrap
#!/bin/bash -f
bash -ic 'vim "$@"' vim "$@"
... затем отредактируйте / usr / share /applications/vim.desktop
или скопируйте его в новый файл *. desktop
со следующими изменениями:
TryExec=vim-gnome-wrap
# It doesn't open window for interactive shell when GNOME arranges the terminal:
# Terminal=true
# Exec=vim-gnome-wrap %F
# ... yet it does so when gnome-terminal is run explicitly:
Terminal=false
Exec=gnome-terminal -e "vim-gnome-wrap %F"
При закрытии окна выводится предупреждение о том, установлен ли vim
buffer имеет несохраненные изменения или нет, и работает с несколькими файлами. Особая благодарность приведенному ниже @muru за предложение синтаксиса $ @
, который точно сохраняет аргументы (пробелы и метасимволы).
.swp
имя файла запускается с a.
таким образом, это по умолчанию 'невидимо'. – Zenon 24.02.2012, 02:35