var header = document.querySelector('header');
var headerHeight = header.offsetHeight;
var sidebar = document.querySelector('#sidebar');
document.addEventListener('scroll', function(e) {
// Check how many pixels have been scrolled
var scrollTop = document.documentElement.scrollTop;
// offset should never be higher than the header
scrollTop = scrollTop > headerHeight ? headerHeight : scrollTop;
// Calculate the final offset to apply to the height
var offsetTop = headerHeight - scrollTop;
sidebar.style.height = 'calc(100% - ' + offsetTop + 'px)';
});
html,
body {
height: 100%;
margin: 0;
}
header {
width: auto;
height: 100px;
background-color: indianred;
}
#sidebar {
width: 20%;
height: calc(100% - 100px);
position: fixed;
bottom: 0;
background-color: gray;
float: left;
overflow-y: auto;
}
#sidebar h2 {
margin: 0;
}
section {
width: 80%;
float: right;
background-color: antiquewhite;
}
<header></header>
<div id="sidebar">
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Hi there</h2>
<h2>Soon done</h2>
<h2>Done!</h2>
</div>
<section>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h1>Main Content</h1>
<p>This is just some text that i put inn to make this look some what of a website</p>
<h2>Next Section</h2>
<p>This is just some text that i put inn to make this look some what of a website</p>
</section>
Я недавно влюбился fuzzyfinder.vim ... :-)
: FuzzyFinderFile позволит Вам открыть файлы путем введения частичных имен или шаблонов.
FuzzyFinder был упомянут, однако я люблю textmate как поведение плагин FuzzyFinderTextmate, который расширяет поведение включать весь subdirs.
Удостоверяются, что Вы используете версию 2.16 fuzzyfinder.vim - старшие версии повреждают плагин.
p*.dat
или что-то как этот (как в старой' DOS) Вы могли также: обзор подтверждает e (для графического окна)
, но необходимо также, вероятно, указать, какую версию энергии Вы используете, и как та вещь в emacs работает. Возможно, мы могли найти Вас точной альтернативой энергии.
Я знаю три плагина, которые разрешают открывать файлы, автозавершение поддержки, и не требуют для ввода имени полного пути файла (файлов) для открытия (как долго, поскольку файлы находятся под одним из каталогов от &path
опция энергии):
:e
/ :find
, а на действиях разделения) В последнее время, я видел другой плагин с подобной функцией, но я не помню имя.
Скоро: находка является вероятным автозавершением поддержки - исправляет по этой теме, циркулируют в vim_dev списке рассылки в эти дни.
При редактировании файлов в общем каталоге Вы можете :cd
к тому каталогу, затем использовать :e
на просто имени файла.
, Например, а не:
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:sp /big/long/path/that/takes/a/while/to/type/or/tab/complete/other_thingy.c
:vs /big/long/path/that/takes/a/while/to/type/or/tab/complete/one_more_thingy.java
можно сделать:
:cd /big/long/path/that/takes/a/while/to/type/or/tab/complete/
:e thingy.rb
:sp other_thingy.c
:vs one_more_thingy.java
Или, если у Вас уже есть файл в желаемом открытом каталоге, можно использовать %
сокращение от текущего имени файла и обрезать его к текущему каталогу с :h
модификатор (:help :_%:
):
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:cd %:h
:sp other_thingy.c
:vs one_more_thingy.java
И, как другие сказали, Вы можете полные вкладкой имена файлов на экс-строке (см. :help cmdline-completion
для больше).
Если у Вас есть теги (и Вы должны), можно открыть файл из командной строки только под названием класс или метод или функция c с "энергией-t DBPlaylist", и в энергии с ": тег ShowList".
Мне нравится: FuzzyFinderTextMate (или Ctrl + F ) на моей установке. См. http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim
Я использую несколько ярлыков в своем .vimrc файле (точный синтаксис ниже).
Они основаны на том, что в 90% случаев, я хочу открыть другой файл в том же каталоге как файл, который я в настоящее время редактирую, или в каталоге, который очень близок в иерархии к тому отредактированному файлу.
Вот то, что действительно делают команды:
,cd
: Измените текущий рабочий каталог на каталог, в котором находится текущий файл, который Вы редактируете.
,e
: Открывает файл с текущим рабочим каталогом, уже заполненным, таким образом, необходимо указать только [1 127] имя файла.
Помещенный они в Ваш .vimrc:
map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
map ,cd :cd %:p:h <CR>
Вот последовательность событий:
<час>,cd
->, Текущий рабочий каталог теперь становится "/home/prog",e
->, Расширяется до ": e/home/prog" так, чтобы можно было просто заполнить имя файла, скажите test.h. ,e
-> Расширяется до ": e / домой" tab
-> Цикл через подкаталоги / домой enter
-> cd
к каталогу, который Вы хотите, говорит, что/home/prog,e
-> Расширяется до ": e/home/prog" если я не пропускаю что-то: e имя файла самый быстрый способ, которым я нашел.
можно использовать вкладку для автоматического заполнения имени файла также.
Можно искать файл в текущем пути при помощи **
:
:tabe **/header.h
вкладка Hit для наблюдения различных завершений, если существует больше чем одно соответствие.
То, что я обычно делаю, e .
(электронная точка пространства), которая дает мне доступный для просмотра текущий каталог - затем я могу /
- искать фрагменты имени, точно так же, как нахождение слова в текстовом файле. Я нахожу это обычно достаточно хорошим, простым и быстрым.
Используйте вкладки, они работают при вводе путей к файлам в режиме Escape энергии!
Я установил FuzzyFinder. Однако, ограничением является то, что он находит файлы только в текущем dir. Одним из обходных путей является добавление FuzzyFinderTextmate. Однако, основываясь на документах и комментариях, это не работает надежно. Вам нужна правильная версия FuzzyFinder и ваша копия Vim для компиляции с поддержкой Ruby.
Другой обходной путь, который я сейчас пытаюсь найти, это открыть все файлы, которые мне, скорее всего, понадобятся в начале сессии редактирования. Например, откройте все файлы в ключевых каталогах...
:args app/**
:args config/**
:args test/**
etc...
(Это значит, что, возможно, я бы открыл десятки файлов, однако, пока это, кажется, работает нормально)
После этого, я могу использовать FuzzyFinder в буферном режиме, и он будет действовать как ярлык команды-o TextMate's
/
. ...
:FuzzyFinderBuffer
Это не совсем то, что вы ищете, но во многих случаях это хорошо (хотя и не во всех ).
Если вы открываете VIM и в буфере есть имя файла, вы можете навести курсор на это имя файла и набрать g f . Это открывает файл, имя которого находится под курсором в том же буфере. Это то же самое, что и
: e CTRL + r CTRL + w
: найти
- еще один вариант.
Я открываю vim из корня моего проекта и устанавливаю путь
туда.
Затем я могу открывать файлы, расположенные в любом месте дерева, используя:
:find **/filena< tab >
Вкладка автоматически заполняется при различных совпадениях. ( **
указывает ему рекурсивный поиск по пути).
Также есть команда-t, которую я считаю лучшей из всех (и я перепробовал их все). Установить его несложно, но после того, как он установлен, им можно только мечтать.