开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
master
分支 (1)
标签 (5202)
master
v8.0.0106
v8.0.0105
v8.0.0104
v8.0.0103
v8.0.0102
v8.0.0101
v8.0.0100
v8.0.0099
v8.0.0098
v8.0.0097
v8.0.0096
v8.0.0095
v8.0.0094
v8.0.0093
v8.0.0092
v8.0.0091
v8.0.0090
v8.0.0089
v8.0.0088
v8.0.0087
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
标签 (5202)
master
v8.0.0106
v8.0.0105
v8.0.0104
v8.0.0103
v8.0.0102
v8.0.0101
v8.0.0100
v8.0.0099
v8.0.0098
v8.0.0097
v8.0.0096
v8.0.0095
v8.0.0094
v8.0.0093
v8.0.0092
v8.0.0091
v8.0.0090
v8.0.0089
v8.0.0088
v8.0.0087
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
标签 (5202)
master
v8.0.0106
v8.0.0105
v8.0.0104
v8.0.0103
v8.0.0102
v8.0.0101
v8.0.0100
v8.0.0099
v8.0.0098
v8.0.0097
v8.0.0096
v8.0.0095
v8.0.0094
v8.0.0093
v8.0.0092
v8.0.0091
v8.0.0090
v8.0.0089
v8.0.0088
v8.0.0087
贡献代码
同步代码
对比差异 通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull
Request,合入后将完成同步
File empty ...
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
README for the Vim source code
Here are a few hints for finding your way around the source code. This
doesn't make it less complex than it is, but it gets you started.
You might also want to read ":help development".
JUMPING AROUND
First of all, use ":make tags" to generate a tags file, so that you can use
the ":tag" command to jump around the source code.
To jump to a function or variable definition, move the cursor on the name and
use the CTRL-] command. Use CTRL-T or CTRL-O to jump back.
To jump to a file, move the cursor on its name and use the "gf" command.
Most code can be found in a file with an obvious name (incomplete list):
	buffer.c	manipulating buffers (loaded files)
	diff.c		diff mode (vimdiff)
	eval.c		expression evaluation
	fileio.c	reading and writing files
	fold.c		folding
	getchar.c	getting characters and key mapping
	mark.c		marks
	mbyte.c		multi-byte character handling
	memfile.c	storing lines for buffers in a swapfile
	memline.c	storing lines for buffers in memory
	menu.c		menus
	message.c	(error) messages
	ops.c		handling operators ("d", "y", "p")
	option.c	options
	quickfix.c	quickfix commands (":make", ":cn")
	regexp.c	pattern matching
	screen.c	updating the windows
	search.c	pattern searching
	spell.c		spell checking
	syntax.c	syntax and other highlighting
	tag.c		tags
	term.c		terminal handling, termcap codes
	undo.c		undo and redo
	window.c	handling split windows
IMPORTANT VARIABLES
The current mode is stored in "State". The values it can have are NORMAL,
INSERT, CMDLINE, and a few others.
The current window is "curwin". The current buffer is "curbuf". These point
to structures with the cursor position in the window, option values, the file
name, etc. These are defined in structs.h.
All the global variables are declared in globals.h.
THE MAIN LOOP
This is conveniently called main_loop(). It updates a few things and then
calls normal_cmd() to process a command. This returns when the command is
finished.
The basic idea is that Vim waits for the user to type a character and
processes it until another character is needed. Thus there are several places
where Vim waits for a character to be typed. The vgetc() function is used for
this. It also handles mapping.
Updating the screen is mostly postponed until a command or a sequence of
commands has finished. The work is done by update_screen(), which calls
win_update() for every window, which calls win_line() for every line.
See the start of screen.c for more explanations.
COMMAND-LINE MODE
When typing a ":", normal_cmd() will call getcmdline() to obtain a line with
an Ex command. getcmdline() contains a loop that will handle each typed
character. It returns when hitting <CR> or <Esc> or some other character that
ends the command line mode.
EX COMMANDS
Ex commands are handled by the function do_cmdline(). It does the generic
parsing of the ":" command line and calls do_one_cmd() for each separate
command. It also takes care of while loops.
do_one_cmd() parses the range and generic arguments and puts them in the
exarg_t and passes it to the function that handles the command.
The ":" commands are listed in ex_cmds.h. The third entry of each item is the
name of the function that handles the command. The last entry are the flags
that are used for the command.
NORMAL MODE COMMANDS
The Normal mode commands are handled by the normal_cmd() function. It also
handles the optional count and an extra character for some commands. These
are passed in a cmdarg_t to the function that handles the command.
There is a table nv_cmds in normal.c which lists the first character of every
command. The second entry of each item is the name of the function that
handles the command.
INSERT MODE COMMANDS
When doing an "i" or "a" command, normal_cmd() will call the edit() function.
It contains a loop that waits for the next character and handles it. It
returns when leaving Insert mode.
OPTIONS
There is a list with all option names in option.c, called options[].
THE GUI
Most of the GUI code is implemented like it was a clever terminal. Typing a
character, moving a scrollbar, clicking the mouse, etc. are all translated
into events which are written in the input buffer. These are read by the
main code, just like reading from a terminal. The code for this is scattered
through gui.c. For example: gui_send_mouse_event() for a mouse click and
gui_menu_cb() for a menu action. Key hits are handled by the system-specific
GUI code, which calls add_to_input_buf() to send the key code.
Updating the GUI window is done by writing codes in the output buffer, just
like writing to a terminal. When the buffer gets full or is flushed,
gui_write() will parse the codes and draw the appropriate items. Finally the
system-specific GUI code will be called to do the work.
DEBUGGING THE GUI
Remember to prevent that gvim forks and the debugger thinks Vim has exited,
add the "-f" argument. In gdb: "run -f -g".
When stepping through display updating code, the focus event is triggered
when going from the debugger to Vim and back. To avoid this, recompile with
some code in gui_focus_change() disabled.
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/bearxup/vim-src-code.git
git@gitee.com:bearxup/vim-src-code.git
bearxup
vim-src-code
vim src code
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /