Еще одна альтернатива, которая кажется более быстрой, чем REGEXP на моем компьютере, -
SELECT * FROM myTable WHERE col1*0 != col1;
Это выберет все строки, где col1 начинается с числового значения.
Я нашел ответ здесь http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
Кажется, что причина vim smartindent является причиной проблемы. На приведенной выше странице описываются рабочие раунды, но после прочтения справки в smartindent в самом vim (: help smartindent) я решил попробовать cindent вместо smartindent.
Я заменил
set smartindent
с
set cindent
в моем файле .vimrc
, и до сих пор он работает отлично.
Это изменило и зафиксировало поведение ' & Lt; & Lt;» и '>>' для отступов визуальных блоков, которые включают комментарии к python.
Есть больше вариантов конфигурации и информации об углублении в помощи vim для smartindent и cindent (: help smartindent и: help cindent).
Мое решение для unindenting #:
Если вы используете cindent, узнаете, что он предназначен для кодирования C и C ++. Здесь # означает, что вы создаете #DEFINE или #MACRO (), поэтому поведение правильное. Но для других языков, где # является комментарием, это раздражает.
Для меня работало следующее:
" cindent enable specific indenting for C code
" set cin nocin
set cin
" cinkeys The default cinkeys causes leading # to unindent to column 0.
" To prevent this, remove the 0# from the definition.
" set cinkeys=0{,0},0),:,0#,!^F,o,O,e - default
set cinkeys=0{,0},0),:,!^F,o,O,e
Моя конфигурация Vim этого не делает. Вы можете попробовать скрипт python.vim, доступный по этой ссылке: http://www.vim.org/scripts/script.php?script_id=790
Некоторые из других ответов были полезны, но их не было достаточно, чтобы исключить повторную линию Vim, когда «#» является первым символом. Ответ PolyThinker не работал для меня, но он дал понять, что «#» можно переустановить для «вставки символа», затем «#», затем удалить дополнительный символ и поместить курсор туда, где он должен быть ». Это сопоставление, которое делает это:
inoremap # X#<left><backspace><right>
Это необходимо, потому что синтаксические пакеты vim, похоже, рассматривают «#» как специальный символ, независимо от того, как устанавливаются параметры. Я хочу, чтобы строка, начинающаяся с «#», была такой же, как строка, начинающаяся с любого другого символа. Самое надежное решение, которое я нашел, - это приведенное выше сопоставление, которое фактически меняет первый символ линии.
Примечание. Я обнаружил, что это отображение вызывает проблемы после запуска I#<esc>
, а затем нажатия «.». для повторной установки предыдущей вставки. Я еще не нашел решение.
У меня есть следующие строки в моем .vimrc, кажется, установлен по умолчанию с моим Ubuntu 8.10
set smartindent
inoremap # X^H#
set autoindent
И я не вижу проблемы. Может быть, вы можете попробовать это. (Обратите внимание, что ^ H следует вводить Ctrl-V Ctrl-H)
:help smartindent
). Я думаю, set autoindent
избыточен; smartindent
включает в себя
– jpyams
6 June 2018 в 16:42
Это вызвано функцией «smartindent». Если у вас есть :set smartindent
в вашем .vimrc, вам нужно удалить его.
@PolyThinker Хотя я вижу этот ответ очень много на этот вопрос, по-моему, это нехорошее решение. Редактор по-прежнему считает, что он должен быть отступом полностью влево - проверьте это, нажав == на строку, начинающуюся с хэша, или нажав =, пока блок кода с комментариями в нем подсвечен для повтора.
Я настоятельно рекомендую filetype indent on
и удалять строки set smartindent
и set autoindent
(или set cindent
) из вашего vimrc. Кто-то еще (по-видимому, Дэвид Бустос) был достаточно любезен, чтобы написать полный парсер для отступов для нас; он находится в $ VIMDIRECTORY / indent / python.vim.
(решение Paul cindent
, вероятно, работает для python, но filetype indent on
гораздо более полезно.)
Я удалил set smartindent
из ~/.vimrc
, но он все еще не отключил smartindent. Когда я открыл файл .py и запустил :set smartindent?
, он отобразил smartindent
.
Оказывается, что далее в ~/.vimrc
была следующая строка:
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
^^^^^^^^^^^
Once Я удалил «smartindent» из этой строки, после чего smartindent был окончательно отключен, и мои комментарии снова были отложены.
cindent
? – Trevor Boyd Smith 8 July 2015 в 12:50