Так что я работаю в магазине PHP, и мы все используем разные редакторы, и мы все должны работать над окнами. Я использую vim, и все в магазине продолжают жаловаться, что всякий раз, когда я редактирую файл, внизу появляется новая строка. Я искал вокруг и обнаружил, что это документированное поведение vi & vim ... но мне было интересно, есть ли способ отключить эту функцию. (Было бы лучше, если бы я мог отключить его для определенных расширений файлов).
Если кто-нибудь знает об этом, это было бы здорово!
?>
закрывающий тег, просто по этой причине.Ответы:
А для
vim
7.4+ вы можете использовать (желательно на .vimrc) (спасибо 罗泽轩 за последние новости!):Теперь о старых версиях
vim
.Даже если файл уже был сохранен с новыми строками в конце:
vim -b file
и однажды в VIM:сделано.
В качестве альтернативы вы можете открыть файлы в VIM с
:e ++bin file
Еще одна альтернатива:
источник
set binary
иset noeol
в свой .vimrcbinary
переопределенияexpandtab
, которые приведут вас к буквальным вкладкам в вашем источнике.set nofixendofline
чтобы решить эту проблему в Vim 7.4+Добавьте следующую команду в ваш .vimrc, чтобы включить опцию конца строки:
Однако сам PHP будет игнорировать этот последний конец строки - это не должно быть проблемой. Я почти уверен, что в вашем случае есть что-то еще, что добавляет последний символ новой строки, или, возможно, есть путаница с типами окончания строки windows / unix (
\n
или\r\n
и т. Д.).Обновить:
Альтернативным решением может быть добавление этой строки в ваш .vimrc:
источник
Есть другой способ приблизиться к этому, если вы используете Git для контроля версий. Вдохновленный ответом здесь , я написал свой собственный фильтр для использования в файле gitattributes .
Чтобы установить этот фильтр, сохраните его как-
noeol_filter
нибудь в своем$PATH
, сделайте его исполняемым и выполните следующие команды:Чтобы начать использовать фильтр только для себя, поставьте следующую строку в
$GIT_DIR/info/attributes
:Это гарантирует, что вы не будете вводить новую строку в eof в
.php
файле, независимо от того, что делает Vim.А теперь сам скрипт:
источник
Я не пробовал эту опцию, но в справочной системе vim указана следующая информация (т.е. help eol):
Вас также может заинтересовать ответ на предыдущий вопрос: « Почему файлы должны заканчиваться символом новой строки ».
источник
Я добавил подсказку на вики Vim для аналогичной (хотя и другой) проблемы:
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
источник
fixeol
опцию, которая может быть отключена для автоматического сохранения любого отсутствующего EOL в конце файла. Этот сценарий становится ненужным для Vim 7.4.785 и более поздних версий ». (Источник: та же вики-страница.) Спасибо, я не знал об этой новой опции.noeol
иnofixeol
достичь желаемого результата.Хорошо, ты находишься на Windows, все усложняет;)
Так как опция 'binary' сбрасывает опцию 'fileformat' (а запись с использованием 'binary' set всегда записывает с окончанием строки Unix), давайте возьмем большой молоток и сделаем это внешне!
Как насчет определения автокоманды (: help autocommand) для события BufWritePost? Эта автокоманда выполняется после каждой записи целого буфера. В этой автокоманде вызывается небольшой внешний инструмент (php, perl или любой другой скрипт), который удаляет последний символ новой строки только что написанного файла.
Так что это будет выглядеть примерно так и попадет в ваш файл .vimrc:
Обязательно прочитайте всю документацию vim об автокомандах, если вы впервые работаете с автокомандами. Есть некоторые предостережения, например, рекомендуется удалить все autocmds из вашего .vimrc на тот случай, если ваш .vimrc может быть получен несколько раз.
источник
silent
. Напримерsilent !your-script <afile>
.Я реализовал предложения Blixtor с помощью постобработки Perl и Python, либо выполняющейся внутри Vim (если она скомпилирована с такой поддержкой языка), либо с помощью внешнего сценария Perl. Он доступен как плагин PreserveNoEOL на vim.org.
источник
let g:PreserveNoEOL = 1
в мой.vimrc
файл! Пришлось учить vimscript, чтобы понять это из описания плагина! : D:help PreserveNoEOL-usage
сказал бы и вам тоже. RTFM :-)INSTALLATION
аCONFIGURATION
. Даже не заметилUSAGE
раздел в описании, потому что он выше установки :)Может быть, вы могли бы посмотреть, почему они жалуются. Если в файле php после новой строки есть символ новой строки?>, Php выведет его как часть страницы. Это не проблема, если вы не попытаетесь отправить заголовки после включения файла.
Тем не менее,?> В конце php-файла не является обязательным. Нет конца?>, Нет проблем с переводом строки в конец файла.
источник
Я добавляю в .vimrc
и это помогает, попробуйте
источник
Я думаю, что нашел лучшее решение, чем принятый ответ. Альтернативные решения не работали для меня, и я не хотел постоянно работать в двоичном режиме. К счастью, это, кажется, делает работу, и я еще не столкнулся с какими-либо неприятными побочными эффектами: сохраняйте пропущенный конец строки в конце текстовых файлов . Я просто добавил все это в мой ~ / .vimrc.
источник
Можно ли использовать специальную команду для сохранения этих файлов?
Если вы сделаете: set binary,: w и: set nobinary, файл будет записан без перевода строки, если не было ни одного, с которого нужно начинать.
Эта последовательность команд может быть помещена в определенную пользователем команду или отображение, конечно.
источник
Начиная с
vim
v7.4 вы можете использоватьЗдесь есть некоторая информация об этом изменении: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
источник
Я обнаружил, что этот плагин vimscript полезен в этой ситуации.
Или читайте больше на github
источник