Необходимо ввести специальный символ в vi

Я хочу набирать ½ в режиме vi, но он идет с дополнительным символом ½ . Я ALT+0189 . Я искал много на том же, но не смог.

Пожалуйста, порекомендуйте.

  • Почему Vim только активирует мою настройку выделения после того, как я вручную извиню .vimrc?
  • Машина сохраняет резервные копии файлов, которые я уже удалил
  • Как скопировать содержимое (большого) vim-файла в системный буфер обмена OSX для вставки в другие приложения?
  • Цвет Vim FoldColumn отличается от Debian / Ubuntu
  • Почему отображение <esc> приводит к сбою клавиш со стрелками в vim?
  • Перемещение одной строки экрана вверх / вниз в многострочном тексте
  • Как прокомментировать несколько строк одновременно?
  • Почему vim не применяет эти цветовые переменные в моей конфигурации?
  • 2 Solutions collect form web for “Необходимо ввести специальный символ в vi”

    Если запись через терминал не работает (похоже, что существует несоответствие кодировки), вы можете вернуться к встроенным методам Vim для ввода специальных символов.

    орграфы

    Удобный способ :help digraphs . Таблица в :help digraph-table перечисляет этот особый символ:

     ½ 12 0xbd 189 VULGAR FRACTION ONE HALF 

    Чтобы вставить, введите Ctrl + K , а затем 1 и 2 .

    запись по номеру

    Это описано в :help i_CTRL-V_digit . С десятичным числом введите Ctrl + V , 1 8 9 . Вы также можете использовать шестнадцатеричное представление ( xbd ).

    Я хочу набирать ½ в режиме vi, но он идет с дополнительным символом ½ .

    Нет.

    Что происходит, так это то, что ваш терминал отправляет этот символ, кодированный как UTF-8. Символом является U + 00BD, а его кодировка UTF-8 – это две 8-битовые последовательности символов, шестнадцатеричные значения которых являются C2 BD .

    vim думает, что вы не печатаете в UTF-8. Он думает, что вы набрали два 8-битных символа, первый символ U + 00C2, а затем символ U + 00BD. Следовательно, он вставляет эти два символа.

    Создание vim считает, что вы используете UTF-8 – это путешествие в сложный мир локалей и кодировок. В настоящее время vim полагает, что ваш терминал генерирует вход Latin-1 (ISO 8859-1). Вам нужно, чтобы vim полагал, что ваш терминал генерирует вход UTF-8.

    Кроме того: из того, что похоронили в комментариях к другому ответу, также очевидно, что ваш текст справки не рассматривается как UTF-8, указывая на то, что он не работает внутри UTF-8, вероятно, потому, что переменные среды ( LANG , LC_ALL и т. Д.) Не LC_ALL локаль UTF-8. Для того, чтобы vim правильно обрабатывал вход UTF-8, лучше всего использовать UTF-8 внутренне, как его общую кодировку.

    Что-то вроде

      : set termencoding = utf-8 encoding = utf-8 

    скорее всего, лучший способ действий. Но вы также можете настроить переменные среды.

    Linux и Unix - лучшая ОС в мире.