Когда Вы пишете в канал, другой конец которого был закрыт, Вы обычно получаете сигнал SIGPIPE и умираете. Однако, если Вы принимаете решение проигнорировать тот сигнал, как svn
делает, затем вместо этого write
возвраты с -1
и errno
набор к EPIPE
чей английский перевод "Повреждается канал". И svn
принимает решение отобразить то сообщение об ошибке, когда ему не удается записать что-то в его стандартный вывод.
head
завершается после того, как это записало 10 строк из своего входа и в результате закрывает канал. svn
не сможет записать больше в тот канал. Большинство приложений затем умирает тихо как поведение по умолчанию, когда они не игнорируют SIGPIPE. svn
по некоторым причинам (возможно, потому что это должно сделать дополнительные вещи прежде, чем умереть) принимает решение проигнорировать SIGPIPE и решить, что это не может больше писать в канал путем проверки ошибочного состояния write
к каналу.
Вы получаете ту же ошибку с:
bash -c 'trap "" PIPE; while echo foo; do :;done' | head
См.:
strace -e write seq 10000 | head
(на Linux) для наблюдения то, чем состоит в том поведение по умолчанию, когда Вы не игнорируете SIGPIPE.
В дополнение к ответу uprego можно нажать Ctrl+G (в нормальном режиме) для получения названия текущего буфера, а также общего количества строк в нем и текущей позиции в нем.
Обновление
Согласно комментарию rxdazn, можно нажать 1 перед Ctrl+G для получения полного пути к файлу. При нажатии 2 Вы получаете полный путь к файлу и буферное число, которое Вы в настоящее время имеете открытый (полезный при открытии нескольких файлов с vim
).
Когда в vim
Я всегда использую :ls
команда.
:ls
1 %a "blah.txt" line 1
Где blah.txt
имя файла.
Если у Вас может быть конфигурационный файл энергии по умолчанию, можно добавить a statusline
всегда иметь детали файла в наличии. Я понимаю, что, если Вы постоянно - дистанционная работа в различные серверы, это не будет большим количеством справки. Вот мой немного сложный, который вытягивают от моего .vimrc.
" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%
" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black
" Make sure it always shows
set laststatus=2
И это похоже на это в MacVim (но работает в терминалах также).
Поскольку всегда можно сделать :help statusline
получить еще некоторые опции и детали. И Vim Изучения контроля Твердый путь ch 17 к хорошему объяснению statusline.
Существует также :echo @%
, который дает Вам название файла относительно текущего каталога.
Там бесчисленные способы получить этот вид информации, но если Вы хотите что-то так, чтобы Вы только нажали клавишу и имя файла, будут отображены, затем вставляют следующее в Ваш ~/.vimrc
:
map <F4> <ESC>:file<CR>
Это говорит,
bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)
И file
команда, как, вероятно, очевидно, возвращает название текущего файла наряду с другой информацией.
Вы могли также установить строку состояния так, чтобы Вы ничего не должны были даже делать кроме взгляда.
Для хранения строки состояния всегда вставляют следующее в Ваш ~/.vimrc
:
set laststatus=2
Это говорит ViM всегда отображать строку состояния, другие опции 0
, для никогда, и 1
для только, когда у Вас есть два или больше окна, открытые в ViM.
Я обычно просто ввожу :e
и это показывает мне полный путь к файлу и количество строк и символов также.
Протест: это вновь открыло файл от диска по существу, таким образом, является самым полезным, когда файл уже сохранен.
:help :e
говорит:
*:e* *:edit* Edit the current file. This is useful to re-edit the current file, when it has been changed outside of Vim. This fails when changes have been made to the current buffer and 'autowriteall' isn't set or the file can't be written.
Я мой vimrc у меня есть это отображение
nnoremap <leader>pfn :echo expand('%:p')<CR>
Таким образом, если я ввожу ,pfn
, или "печатают имя файла", это echos весь путь к файлу.
less
команда, которую я использую при просмотре файлов в противоположность редактированию. – jmathew 12.12.2013, 23:56