Я не могу найти способ заставить Вима показать все пробелы как персонажа. Все, что я нашел, было о вкладках, пробелах и т. Д.
vim
whitespace
vi
hidden-characters
холодный морской тропический воздух
источник
источник
:set list
. Это не отвечает на наш вопрос. (Для других желающих: mrucci «s ответ ниже полезно, хотя и не вполне реальное решение .)list
иlistchars
считает, что пробел идет сразу за вкладкой. Это было бы почти невидимым в этой ситуации. Я согласен, что вы можете поймать большинство ситуаций, но если было бы неплохо иметь правильное выделение всех пробелов.Ответы:
Как уже говорили другие, вы могли бы использовать
который в сочетании с
отображать невидимые символы.
Теперь нет явной опции, которую вы можете использовать для отображения пробелов, но в списках символов вы можете настроить отображение символа для всего, НО пробелы. Например, мой выглядит так
так что теперь, после того, как вы используете
все, что явно не показано как что-то еще, на самом деле является простым старым пробелом.
Как обычно, чтобы понять, как
listchars
работает, воспользуйтесь помощью. Он предоставляет отличную информацию о том, какие символы могут отображаться (например, конечный пробел) и как это сделать:Возможно, было бы полезно добавить к нему переключатель, чтобы вы могли легко увидеть изменения в середине редактирования (источник: VIM: set list! Как переключатель в .vimrc ):
источник
.vimrc
, чтобы можно было легко включить этот красивый способ отображения невидимых символов:set list
в любое время (без повторного поиска этой страницы).Начиная с патча 7.4.710 , теперь вы можете установить символ для показа вместо пробела, используя listchars!
Таким образом, чтобы показать ВСЕ символы пробела в виде символа, вы можете сделать следующее:
Обсуждение в списке рассылки: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
источник
:help listchars
чтобы проверить, является ли "пробел" допустимой опцией для "listchars". Если это не так, обновите vim до указанного патча @brettanomyces. Или просто оставьте «пробел» вне установленной команды, если вам не нужно видеть пробелы.space:·
), так как он выглядит как MS Word, Notepad ++ и т. Д.<C-K>.M
VIM для·
. Смотрите:h digraph
подробности.:set list
включить.:set nolist
отключить.источник
: set list!
лучше :)Shift
и!
оба сложнее , чем набратьno
. Если вы помещаете это в свой .vimrc, я согласен, что форму с восклицательным знаком легче читать.:set list!
вы сделаете это без необходимости входаnolist
.!
Просто делает противоположное тому, что бы ни в настоящее время устанавливается. Я использую это все время, особенно когда с:set paste!
. Я ненавижу нажимать клавиши со стрелками, чтобы найти:set paste
или:set nopaste
LOLЯ думаю, что другие ответы здесь более полны, но я подумал, что поделюсь трюком, который я обычно использую для визуальной разграничения табуляции и пробелов:
Это правила подсветки синтаксиса для языка программирования Whitespace - вкладки отображаются зеленым цветом, а пробелы - красным. :)
Может сочетаться с тем,
:set list
что упоминалось во многих других ответах, хотя вкладки будут отображаться как ^ I без зеленого выделения, но пробелы будут отображаться красным цветом.источник
:set list
покажет все пробелы как символ. Все, кроме пробела, будет выглядеть иначе, чем его нормальное состояние, а это означает, что если вы все еще видите простое старое пространство, это действительно простое старое пространство. :)источник
:set nolist
!
в конце можно переключать опции без :set list!
:se hls | /\_s
для этого. Получает все, тогда какset list
игнорирует пробелы. Выкл снова с:se nohls
. Подробности об этом в этом посте: albertech.blogspot.com/2015/02/…Если вы установите:
и затем выполните поиск пробела, каждый символ пробела будет показан как символ подчеркивания.
Вы можете использовать эту команду в удобной функции, которая переключает «подчеркивание» пробелов.
Сопоставьте функцию с сочетанием клавиш с помощью:
NB. Определите функцию в vimrc после того, как была установлена схема цветов.
источник
В зависимости от ваших правил синтаксиса для текущего буфера, что-то вроде этого может работать:
Для этого нужен vim 7.3 с функцией + hide
Обновление 24.10.2014 Чтобы немного рассказать об этом. Конечно, можно определить выделение для скрытых символов.
Вы можете настроить, как выглядят скрытые символы. Для выделения вам нужно будет хотя бы один раз настроить группу подсветки «Скрыть» (см. Справку в разделе «
:h hl-Conceal
Это можно сделать в вашей цветовой схеме», и тогда вам не нужно заново настраивать ее. Но это влияет на все скрытые символы (например, если ваш Синтаксический скрипт скрывает еще несколько элементов, они будут отображаться как символы пробела. Это может выглядеть так::hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Кажется, есть особенность, что Vim не будет выделять пробелы, если синтаксический скрипт использует
skipwhite
ключевое слово. Обхода не будет (возможно, это будет исправлено, я выложил патч )list
режиме. Последний на момент написания, кажется, это . (Это означает, что вам нужно создать свой собственный Vim, чтобы использовать это).conceallevel
Иconcealcursor
являются окна локальных параметров. Это означает, что они могут быть разными в разных окнах (и, возможно, будут также устанавливаться плагинами типов файлов или другими скриптами плагинов).BufWinEnter
или, возможно, такжеSyntax
или дажеFileType
автокоманды. (Я не проверял, какой из них на самом деле работает).Два последних пункта означают, что вам нужно настроить некоторые автокоманды, которые сбрасывают правила синтаксиса и соответствующие опции. Для первого можно настроить подсветку с помощью
ColorScheme
автокоманды (чтобы скрытые символы всегда выглядели одинаково, независимо от того, какую цветовую схему на самом деле настраивает). Для полного решения посмотрите ответ romainl, который должен дать вам старт. Если вы настраиваете функцию, вы можете легко настроить команду переключения, чтобы включить или выключить отображение специальной подсветки.Обновление 26.10.2014 Я сделал плагин из этого вопроса.
Обновление 22.04.2015 В Vim был включен патч, который делает это возможным с помощью этой
list
опции. Просто установитеset list listchars+=space:␣
Это работает с Vim 7.4.711источник
.vimrc
?Æ
странный выбор персонажа для этого, почему бы и нет·
?Я использую это
выделить пробелы. Он ищет все пробелы, а затем позволяет выделению выделить их. Тем не менее, он не печатает специальный символ.
источник
nnoremap <leader><space> :noh<cr>
)Если под пробелами вы подразумеваете символ '', мое предложение будет просто поиск / замена. Как другие намекают,
set list
изменения не являющихся печати символов на видимый символ , который настроен вlistchars
.Чтобы явно показать пробелы как некоторые другие символы, нужно выполнить что-то похожее на приведенное ниже:
:%s/ /█/g
Затем просто отмените изменения, чтобы вернуться снова.
(чтобы получить █ я нажал эту точную последовательность клавиш: :%s/ /CTRL-KFB/g)
источник
:set list
, меняя видимый символ («пробел») на _non priting_ (??). Интересно, можно ли использовать это внутри матча, например,:match MyBlackBlockChar "appropriate_regex
это должно сработать, не так ли?:%s/\s/█/g
для всего пробела. Кроме того,:set hlsearch
плюс:&s/\s//gn
может быть полезным.Чтобы выделить пробелы, просто найдите его:
/ <Пробел>
Ноты:
Чтобы выделить пробелы и вкладки:
/ [<пробел> <tab>]
Быстрый способ удалить блики - это поискать что-нибудь еще: / asdf
(просто введите любой короткий список случайных символов)
источник
/<space>
против/\s
. Я думаю, что это не очевидно и быстрее использовать предложение здесь.Код ниже основан на ответе Кристиана Брабандта и, кажется, делает то, что хочет ОП:
Добавьте эти строки к себе
~/.vimrc
и начните новый сеанс Vim, чтобы увидеть все еще несовершенную магию.Не стесняйтесь редактировать цвета по умолчанию и скрывать персонажа.
Предостережение: что-то в группе
*FuncBody
синтаксиса на нескольких языках мешает отображению средней точки. Я не знаю (пока?), Как сделать это решение более надежным.источник
skipwhite
аргумент в правилах синтаксиса, который запрещает совпадение синтаксической группы (хотя она должна быть разрешена во всех группах).Я был разочарован всеми другими ответами на этот вопрос, потому что ни один из них не выделяет символ пробела в полезной форме. Отображение пробелов в виде символов особенно полезно для языков с пробельными символами, где смешивание табуляции и пробелов вредно.
Мое решение состоит в том, чтобы показать вкладки и подчеркнуть несколько пробелов. Он заимствован из ответа Мруччи и этого урока . Поскольку он использует подсветку синтаксиса, он постоянен:
Используя это, вкладки отображаются как
|
и пробелы как_
, что позволяет очень легко определить, когда я смешиваю стили кода.Единственный недостаток, который я обнаружил, это то, что этот фрагмент не регулирует цвет фона в соответствии с контекстом (как в комментарии).
источник
все ответы выше пытаются сделать пробелы видимыми изнутри vim. Если вы действительно настаиваете на наличии видимых пространств в виде точек, есть другой подход ...
Если это невозможно сделать в vim, полностью измените ваш шрифт. Я скопировал шрифт Ubuntu One Mono и отредактировал его с помощью FontForge. Не забудьте изменить полное имя шрифта, семейство, предпочитаемое семейство, совместимое полное (в FontFoge оно находится под именами TTF в информации о шрифте), чтобы иметь его в качестве отдельного шрифта. Просто отредактируйте символ пробела, чтобы точка находилась посередине, и сохраните шрифт в ~ / .fonts. Теперь вы можете использовать его для своего gvim или всего терминала ... Я скопировал "!" символ, удалил линию и переместил точку в середину. Прошло чуть больше 5 минут ...
Примечание: изменение символа пробела (0x20) приводит к неудобству наличия точек на всем экране vim ... (но это отделит пробелы от вкладок ...)
источник
Я не нашел точно, что я хотел от существующих ответов. Код ниже выделит все пробелы ярко-красным. Просто добавьте следующее к вашему
.vimrc
источник
избегает "вы должны искать пробелы, чтобы заставить их появляться", но afaict не может быть настроен на то, чтобы делать незаметные вещи с пробелами. CursorLine может быть любой выделенной группой, а в теме по умолчанию это обычное подчеркивание.
источник
Мне нравится использовать специальные символы для отображения пробелов, это более понятно. Даже карта для переключения является ключевой функцией для быстрой проверки.
Вы можете найти эти функции в старом скрипте vim, который не обновлялся с 2004 года:
vim-scripts/cream-showinvisibles@vim.org
Благодаря проекту vim-scripts и vundle вы можете оживить этот плагин
ВИМ-скрипты / крем-showinvisibles @ GitHub
Более того, мои два цента на этом - добавить настраиваемый ярлык (вместо предопределенного F4)
так что добавьте это в ~ / .vimrc
установить плагин на vim
и там вы идете
источник
Чтобы покрыть пробельные символы Юникода:
Результат:
")
│
" (два символа: длинная труба, а затем порядковый номер; они серого цветаcolorscheme murphy
)·
" (один символ; он серого цветаcolorscheme murphy
)"
источник
set listchars=tab:»\ ,space:·
для вашей справки.gvim
и дляvim
.Вы могли бы использовать
чтобы действительно увидеть структуру линии. Вы увидите вкладки и новые строки в явном виде. Когда вы видите пробел, это действительно пробел.
источник
выделить поиск
в
.vimrc
том, чтои искать пробелы и возврат каретки
или поиск всех пробельных символов
поиска всех непробельных символов (пробельные символы не отображаются, поэтому вы видите пробельные символы между словами, но не завершающие пробельные символы)
показать все завершающие пробелы - в конце строки
источник
Сохраните эти хаки в .vimrc как комментарии, так что в оболочке просто:
источник
:se
достаточно,:set
не нужно.источник
Вы также можете выделить пробелы (заменив пробелы блоком):
(прежде чем писать отменить это)
источник
Добавление этого в мой .vimrc работает для меня. Просто убедитесь, что у вас больше ничего не конфликтует ..
источник