В C, int
, по крайней мере, был предназначен для имения "естественного" размера слова ЦП, и long
был, вероятно, предназначен, чтобы быть "большим естественным" размером слова (не уверенный в той последней части, но это также объяснит, почему int
и long
имеют тот же размер на x86).
Теперь, мое предположение: для int
и long
, существует естественное представление, которое соответствует точно регистрам машины. На большинстве центральных процессоров однако, меньшие типы byte
и short
должны были бы быть дополнены к int
так или иначе прежде чем быть используемым. Если это так, у Вас может также быть бросок.
Я не считаю, что углубление в подкаталоги с помощью простого старого : e
было бы таким громоздким, учитывая приличную конфигурацию для завершения табуляции.
Посмотрите на 'wildmenu'
, чтобы Vim показывал список завершений (имен файлов) в строке режима над командной строкой. Вы можете изменить параметр 'wildmode'
, чтобы дополнительно настроить тип завершения табуляции, который будет выполнять Vim.
Лично я использую : set wildmode = full
.
Мой рабочий процесс выглядит следующим образом:
: cd
в каталог верхнего уровня моего проекта. Чтобы открыть файл foo / bar / baz
:
Простейший сценарий: введите : ef
.
Если в одном из этих каталогов имеется несколько файлов, начинающихся с b
, вам, возможно, придется выполнить
или
или другой
на клавиатуре, чтобы переключаться между ними (или введите еще несколько букв, чтобы устранить неоднозначность).
В худшем случае есть файлы и каталоги с одинаковыми именами, и вам нужно развернуть в каталог. В этом случае введите имя каталога с помощью табуляции, а затем введите *
для детализации.
: e
новый файл в том же окне. : b
для циклического просмотра буферов, которые уже открыты в фоновом режиме. Если вы наберете : b foo
, он будет соответствовать только открытым в данный момент файлам, которые соответствуют foo
. Я также использую эти сопоставления, чтобы упростить открытие новых окон и переключаться между ними, потому что это то, что я делаю так часто.
" Window movements; I do this often enough to warrant using up M-arrows on this"
nnoremap <M-Right> <C-W><Right>
nnoremap <M-Left> <C-W><Left>
nnoremap <M-Up> <C-W><Up>
nnoremap <M-Down> <C-W><Down>
" Open window below instead of above"
nnoremap <C-W>N :let sb=&sb<BAR>set sb<BAR>new<BAR>let &sb=sb<CR>
" Vertical equivalent of C-w-n and C-w-N"
nnoremap <C-w>v :vnew<CR>
nnoremap <C-w>V :let spr=&spr<BAR>set nospr<BAR>vnew<BAR>let &spr=spr<CR>
" I open new windows to warrant using up C-M-arrows on this"
nmap <C-M-Up> <C-w>n
nmap <C-M-Down> <C-w>N
nmap <C-M-Right> <C-w>v
nmap <C-M-Left> <C-w>V
У меня уходит несколько секунд, чтобы открыть Vim, настроить несколько окон и открыть в них несколько файлов. Лично я никогда не находил, чтобы какие-либо сторонние скрипты просмотра файлов были очень полезными.
" Window movements; I do this often enough to warrant using up M-arrows on this"
nnoremap <M-Right> <C-W><Right>
nnoremap <M-Left> <C-W><Left>
nnoremap <M-Up> <C-W><Up>
nnoremap <M-Down> <C-W><Down>
" Open window below instead of above"
nnoremap <C-W>N :let sb=&sb<BAR>set sb<BAR>new<BAR>let &sb=sb<CR>
" Vertical equivalent of C-w-n and C-w-N"
nnoremap <C-w>v :vnew<CR>
nnoremap <C-w>V :let spr=&spr<BAR>set nospr<BAR>vnew<BAR>let &spr=spr<CR>
" I open new windows to warrant using up C-M-arrows on this"
nmap <C-M-Up> <C-w>n
nmap <C-M-Down> <C-w>N
nmap <C-M-Right> <C-w>v
nmap <C-M-Left> <C-w>V
У меня уходит несколько секунд, чтобы открыть Vim, настроить несколько окон и открыть в них несколько файлов. Лично я никогда не находил, чтобы какие-либо сторонние скрипты просмотра файлов были очень полезными.
" Window movements; I do this often enough to warrant using up M-arrows on this"
nnoremap <M-Right> <C-W><Right>
nnoremap <M-Left> <C-W><Left>
nnoremap <M-Up> <C-W><Up>
nnoremap <M-Down> <C-W><Down>
" Open window below instead of above"
nnoremap <C-W>N :let sb=&sb<BAR>set sb<BAR>new<BAR>let &sb=sb<CR>
" Vertical equivalent of C-w-n and C-w-N"
nnoremap <C-w>v :vnew<CR>
nnoremap <C-w>V :let spr=&spr<BAR>set nospr<BAR>vnew<BAR>let &spr=spr<CR>
" I open new windows to warrant using up C-M-arrows on this"
nmap <C-M-Up> <C-w>n
nmap <C-M-Down> <C-w>N
nmap <C-M-Right> <C-w>v
nmap <C-M-Left> <C-w>V
У меня уходит несколько секунд, чтобы открыть Vim, настроить несколько окон и открыть в них несколько файлов. Лично я никогда не находил, чтобы какие-либо сторонние скрипты просмотра файлов были очень полезными.
В дополнение к ответам wildmenu
я использую плагин BufExplorer и следующие сопоставления для буферов быстрого перехода:
nmap <A-1> :b 1<CR>
nmap <A-2> :b 2<CR>
nmap <A-3> :b 3<CR>
...
nmap <A-0> :b 10<CR>
nmap <A-=> \bs
Или вы можете просто замените проводник буфера командой : ls
, которая в основном отображает то же самое.
Последняя отображает Alt - =
для отображения проводника буфера.
I не использую Windows так часто, поскольку у меня обычно только одно или два окна.
Я также изменил строку состояния
, включив в нее номер буфера % 2n
, так что I всегда знать, какой буфер редактируется. См. : h statusline
вы знаете приложение MacVim? Это VIM, отполированный для OS X, и одна из его функций - поддержка вкладок (CMD + T для открытия новой вкладки), у него есть ящик и т. Д. (Прочтите это: http://zerokspot.com/ weblog / 2008/08/03 / macvim-as-textmate-replacement / )
Попробуйте!
С уважением Михал
Я считаю LustyExplorer лучший на данный момент.
Вы можете открыть файл, набрав только часть его имени.
Вы можете открыть файл из каталога текущего файла или текущего pwd
, или из списка буферов.
Если вы открываете файл из списка буферов, вам не нужно перемещаться по дереву каталогов, хотя, к сожалению, для двух других режимов вам все равно придется перемещаться по дереву. Хорошо, что вам не нужно начинать с первого символа.
Если у вас есть:
dir_a/
...
dir_b/
file.js
file.html
и вы хотите открыть dir_b / file.html
, как правило, вы можете найти его, набрав b
Я использую эту функцию для поиска файлов в подкаталогах, но я ее не писал. Это из вики vim :
function! Find(name) let l:list=system("find . -name '".a:name."' | grep -v \".svn/\" | perl -ne 'print \"$.\\t$_\"'") let l:num=strlen(substitute(l:list, "[^\n]", "", "g")) if l:num 0 echo "Not a number" return endif if l:inputl:num echo "Out of range" return endif let l:line=matchstr("\n".l:list, "\n".l:input."\t[^\n]*") else let l:line=l:list endif let l:line=substitute(l:line, "^[^\t]*\t./", "", "") execute ":e ".l:line endfunction command! -nargs=1 Find :call Find("")
Мне нравится, что в нем есть поддержка подстановочных знаков (*). Это также хорошо подходит для нескольких матчей.
Если вы еще не нашли их, вы можете проверить:
Также имейте в виду, что вы можете переназначить сочетания клавиш в ваш .vimrc, чтобы сделать их менее громоздкими. Я часто использую разделенные окна; Я обнаружил, что следующее значительно упрощает работу с ними:
" set your own personal modifier key to something handy
let mapleader = ","
" use ,v to make a new vertical split, ,s for horiz, ,x to close a split
noremap <leader>v <c-w>v<c-w>l
noremap <leader>s <c-w>s<c-w>j
noremap <leader>x <c-w>c
" use ctrl-h/j/k/l to switch between splits
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-l> <c-w>l
map <c-h> <c-w>h
Мой рабочий процесс для поиска файлов - wildmenu, autocwd и : e
.
Соответствующие части в . vimrc
:
set wildmenu
set wildignore=*.dll,*.o,*.pyc,*.bak,*.exe,*.jpg,*.jpeg,*.png,*.gif
set wildmode=list:full
set autochdir
let g:netrw_list_hide='^\.,.\(pyc\|pyo\|o\)$'
И как его использовать:
:e myf^D
Это дает все файлы в текущем каталоге, которые начинаются с myf. Вы также можете
через них. Используйте return, чтобы открыть:)
^ D
всегда выдаст вам все совпадения. Поскольку autocmd всегда попадает в папку текущего файла, с ним легко работать. Если вы находитесь в foo / bar.py
и хотите перейти в foo / baz.py
, вы делаете только : e baz.py
, и вы там. Это также работает с буферами (: b foo ^ D
перечисляет все буферы, начинающиеся с foo)
foo / bar.py
и хотите перейти в foo / baz.py
, вы делаете только : e baz.py
, и вы там. Это также работает с буферами (: b foo ^ D
перечисляет все буферы, начинающиеся с foo) Поскольку autocmd всегда попадает в папку текущего файла, с ним легко работать. Если вы находитесь в foo / bar.py
и хотите перейти в foo / baz.py
, вы делаете только : e baz.py
, и вы там. Это также работает с буферами (: b foo ^ D
перечисляет все буферы, начинающиеся с foo) Вот кое-что довольно тривиальное, что я вставляю в свой .vimrc
. Он загрузит файл из любого подкаталога.
" load from an unspecified subdirectory
function! LoadFromSubdirectory(filespec)
let filename = glob("`find . -name '" . a:filespec . "' -print`")
exe ':e '.filename
endfunction
:command -nargs=1 Er :call LoadFromSubdirectory(<f-args>)
Поэтому я могу просто сказать:
: Er Main.java
, и он будет искать подкаталоги, находить Main.java
и загружать его. Это не очень хорошо работает с несколькими файлами с одинаковыми именами, но это быстро и просто.
Другой инструмент, который я использую, - это VTreeExplorer , который предоставляет окно файлов / каталогов в виде дерева и не работает. Не требуются какие-либо специальные параметры сборки от VIM (т.е. это обычный плагин).
Думаю, мне лучше бы подошли вкладки, которые я легко переключаться между ними, но, может быть, я нужно использовать другой рабочий процесс.
Вы знаете о вкладках Vim? Не уверен, что вы имели в виду вкладки Vim или тосковали по вкладкам TextMate. Неясно, какую версию Vim вы используете, но в ней есть вкладки, начиная с версии 7.0 (которая, кажется, устанавливается везде, где я смотрю в последнее время), и они потрясающие.
: tabe
открывает новую (сокращенно от "редактирование вкладки", например : tabe
для пустого или : tabe path / to / file
для открытия файла на новой вкладке), вы можете перемещаться между соседними вкладками с помощью ] gt
/ gT
, а также множество других навигационных команд, связанных с вкладками, как и следовало ожидать от Vim (: вкладки справки
)
Мой рабочий процесс для большие проекты, как правило, включают в себя множество вкладок, в каждом от 1 до 3 окон в зависимости от того, какой контекст мне нужен. Это работает даже лучше, если у меня окно терминала двойной ширины, поскольку я могу разделить его по вертикали с помощью : vs
, поэтому на одной вкладке можно легко показать мне 4 файла одновременно с большим количеством места для каждого.
Окончательный Совет: я иногда использую команду «переключить буфер» (: sb
), которая в некотором роде похожа на нечеткое обнаружение TM, поскольку она работает довольно хорошо, но только для уже открытых буферов. По-прежнему отлично подходит, когда у меня одновременно открыто несколько или более файлов. (NB, мне нужно было : установить switchbuf = usetab
в моем vimrc, чтобы это работало во всех вкладках, но как только это будет установлено, все будет отлично.)
Последний совет: я иногда использую команду «переключить буфер» (: sb
), которая является что-то вроде нечеткого вывода TM в том смысле, что он работает довольно хорошо, но только для уже открытых буферов. По-прежнему отлично подходит, когда у меня одновременно открыто несколько или более файлов. (NB, мне нужно было : установить switchbuf = usetab
в моем vimrc, чтобы это работало во всех вкладках, но как только это будет установлено, все будет отлично.)
Последний совет: я иногда использую команду «переключить буфер» (: sb
), которая является что-то вроде нечеткого вывода TM в том смысле, что он работает довольно хорошо, но только для уже открытых буферов. По-прежнему отлично подходит, когда у меня одновременно открыто несколько или более файлов. (NB, мне нужно было : установить switchbuf = usetab
в моем vimrc, чтобы это работало во всех вкладках, но как только это будет установлено, все будет отлично.)
: установить switchbuf = usetab
в моем vimrc, чтобы это работало во всех вкладках, но как только это будет установлено, все будет отлично.) По-прежнему отлично подходит, когда у меня одновременно открыто несколько или более файлов. (NB, мне нужно было : установить switchbuf = usetab
в моем vimrc, чтобы это работало во всех вкладках, но как только это будет установлено, все будет отлично.) Если нужный файл уже загружен в буфер (что вполне вероятно, если вы регулярно переключаетесь между несколькими файлами), вы можете быстро переключиться на буфер с помощью : b [uffer]
команда.
: b
может принимать либо номер буфера в качестве параметра, либо (что более полезно) строку, которая соответствует части пути / имени файла. Если есть несколько совпадений, вы можете использовать вкладку для их просмотра.
Если вы хотите разделить окно и открыть буфер в новом окне, используйте : sb name
Если вы хотите открыть буфер в новой вкладке, используйте : tab b name
Вы также можете использовать команду : ls
, чтобы просмотреть список загруженных в данный момент буферов.
Простым способом просмотра файловой системы является команда:
:Sex
Я это не выдумываю :)