Что случилось с вами, так это то, что когда программа C была скомпилирована на ассемблере, ваша функция toUpper закончилась так:
_toUpper:
LFB4:
pushq %rbp
LCFI3:
movq %rsp, %rbp
LCFI4:
movb %dil, -4(%rbp)
cmpb $96, -4(%rbp)
jle L8
cmpb $122, -4(%rbp)
jg L8
movzbl -4(%rbp), %eax
subl $32, %eax
movb %al, -4(%rbp)
L8:
leave
ret
Вычитание 32 было выполнено в% eax регистр. И в соглашении на вызов x86, это регистр, в котором ожидается возвращаемое значение! Итак ... вам повезло.
Но, пожалуйста, обратите внимание на предупреждения. Они там по какой-то причине!
Почему бы не использовать вкладки (представленный в Vim 7)? Можно переключиться между вкладками с :tabn
и :tabp
, С :tabe <filepath>
можно добавить новую вкладку; и с постоянным клиентом :q
или :wq
Вы закрываете вкладку. Если Вы карта :tabn
и :tabp
к Вашему F7 / ключи F8 можно легко переключиться между файлами.
, Если нет то, что у многих файлов или Вас нет Vim 7, можно также разделить экран в нескольких файлах: :sp <filepath>
. Тогда можно переключиться между splitscreens с Ctrl + W и затем клавишей со стрелкой в направлении, которое Вы хотите переместить (или вместо клавиш со стрелками, w для следующего и W для предыдущего splitscreen)
При использовании нескольких файлов в энергии я использую эти команды главным образом (с ~350 открытыми файлами):
:b <partial filename><tab>
(переход к буферу) :bw
(буферная очистка, удалите буфер) :e <file path>
(редактирование, откройтесь, новый буфер> pltags
- позволяют перейти к определениям подпрограммы/метода Vim (но не исходная Vi!) имеет вкладки, которые я нахожу (во многих контекстах) выше буферов. Можно сказать :tabe [filename]
для открытия файла на новой вкладке. Циклическое повторение между вкладками сделано путем нажатия на вкладку или сочетаниями клавиш [ n] gt
и gT
. Графический Vim даже имеет графические вкладки.
Я использую буферные команды - :bn
(следующий буфер), :bp
(предыдущий буфер) :buffers
(список, открытые буферы) :b<n>
(открытый буфер n) :bd
(удаляют буфер). :e <filename>
просто откроется в новый буфер.
Добавить к эти args
список:
:argadd
Для удаления из эти args
список:
:argdelete
В Вашем примере, Вы могли использовать :argedit
test.pl, чтобы добавить test.pl к эти args
список и отредактировать файл за один шаг.
:help args
предоставляет намного больше подробной информации и усовершенствованного использования
Если Вы собираетесь использовать несколько буферов, я думаю, что самая важная вещь состоит в том, чтобы установить скрытый так, чтобы она позволила Вам буферы коммутатора, даже если Вы не сохранили изменения в том, которое Вы оставляете.
Я использую тот же .vimrc файл для GVim и энергии командной строки. Я склонен использовать вкладки в GVim и буферы в энергии командной строки, таким образом, у меня есть свой .vimrc, настроенный для создания работы с ними обоими легче:
" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>
" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
if exists( '*tabpagenr' ) && tabpagenr(' Это ударяет существующие отображения для H и L, но это делает переключение между файлами чрезвычайно быстрым и легким. Просто хит "H" для следующего и "L" для предыдущего; используете ли Вы вкладки или буферы, Вы получите намеченные результаты.
) != 1
" Tab support && tabs open
normal gt
else
" No tab support, or no tabs open
execute ":bnext"
endif
endfunction
function! MyPrev()
if exists( '*tabpagenr' ) && tabpagenr(' Это ударяет существующие отображения для H и L, но это делает переключение между файлами чрезвычайно быстрым и легким. Просто хит "H" для следующего и "L" для предыдущего; используете ли Вы вкладки или буферы, Вы получите намеченные результаты.
) != '1'
" Tab support && tabs open
normal gT
else
" No tab support, or no tabs open
execute ":bprev"
endif
endfunction
Это ударяет существующие отображения для H и L, но это делает переключение между файлами чрезвычайно быстрым и легким. Просто хит "H" для следующего и "L" для предыдущего; используете ли Вы вкладки или буферы, Вы получите намеченные результаты.
Я думаю, что можно использовать неправильную команду для рассмотрения списка файлов, которые Вы имеете открытый.
Попытка, делающая :ls
для наблюдения список файлов, которые Вы имеете открытый и Вы будете видеть:
1 %a "./checkin.pl" line 1
2 # "./grabakamailogs.pl" line 1
3 "./grabwmlogs.pl" line 0
etc.
можно тогда возвратиться через файлы путем обращения к ним числами, перечисленными, например:3b
, или можно разделить экран путем введения номера, но использования сурьмы вместо просто b.
Как в стороне % относится к в настоящее время видимому файлу, и # относится к альтернативному файлу.
можно легко переключиться между этими двумя файлами путем нажатия Ctrl Редактирование 6
Сдвига: как :ls
можно использовать :reg
для наблюдения текущего содержания регистров включая 0-9 регистров, которые содержат то, что Вы удалили. Это особенно полезно, если Вы хотите снова использовать некоторый текст, который Вы ранее удалили.
:ls
для списка открытых буферов
:bp
предыдущий буфер :bn
следующий буфер :bn
(n
число) перемещаются в буфер n'th :b <filename-part>
с автозавершением обеспечения клавиши Tab (потрясающий!!) В некоторых версиях энергии, bn
и bp
на самом деле bnext
и bprevious
соответственно. Автоматическое заполнение вкладки полезно в этом случае.
Или когда Вы находитесь в нормальном режиме, используйте ^
для переключения на последний файл, Вы продолжали работать.
Плюс, можно сохранить сессии энергии
:mksession! ~/today.ses
, вышеупомянутая команда сохраняет текущие открытые буферы файлов и настройки к [1 113]. Можно загрузить ту сессию при помощи [1 122]
vim -S ~/today.ses
Никакая стычка, помнящая, где Вы вчера кончили.;)
Для наблюдения списка текущих буферов я использую:
:ls
<час> To открывают новый файл, я использую
:e ../myFile.pl
с расширенным заполнением клавишей Tab (поместите set wildmenu
в Ваш .vimrc
).
Примечание: можно также использовать :find
, который будет искать ряд путей Вас, но необходимо настроить те пути сначала.
Для переключения между всеми открытыми файлами я использую
:b myfile
с расширенным заполнением клавишей Tab (все еще set wildmenu
).
Примечание: :b#
выбирает последний посещаемый файл, таким образом, можно использовать его для переключения быстро между двумя файлами.
Ctrl-W s
и Ctrl-W v
для разделения текущего окна горизонтально и вертикально. Можно также использовать :split
и :vertical split
(:sp
и :vs
)
Ctrl-W w
для переключения между открытыми окнами, и Ctrl-W h
(или j
или k
или l
) для навигации через открытые окна.
Ctrl-W c
для закрытия текущего окна, и Ctrl-W o
для закрытия всех окон кроме текущего.
Стартовая энергия с -o
или -O
флаг открывает каждый файл в своем собственном разделении.
Со всеми они мне не нужны вкладки в Vim, и мои пальцы находят мои буферы, не мои глаза.
Примечание: если Вы хотите, чтобы все файлы перешли к тому же экземпляру Vim, запустите Vim с --remote-silent
опция.
Я использую несколько буферов, которые установлены скрытые в моем ~/.vimrc
файл.
мини-буферный сценарий проводника хорош также получить хороший компактный список Ваших буферов. Тогда :b1
или :b2
..., чтобы перейти к соответствующему буферу или использовать мини-буферный проводник и вкладку через буферы.