A New Reading Code Method

一个源代码查阅记录方法

ripgrep

为了快速阅读源码,一方面我们可能需要通过 fd 快速查找文件,另一方面我们需要通过 rg 快速查找文件内容,最重要我们也需要跳转定义, 跳转定义一般有两种方式可以去执行,一是通过 ctags 精确查找,亦或者通过 leaderf 或者 rg 进行模糊查找。

image

1. RG执行步骤

  • 在vim中打开每个项目根目录的 vimwiki 文件(需要自建);注意可以把你每一个关注的目录添加到 nerdtree :Bookmark
  • 通过rg搜索你要搜索的内容, 你可以给每次你的搜索主题,写上你的理解,你的认识,这样你的每次阅读都是有记录的
  • 把搜索的文件路径,黏贴到wiki文件内,通过gf定位到文件进行查阅(注意在你的vim系统中,也开始使用,cp获取绝对路径,然后把路径放到你的helpwiki文件中,保证vim系统也能记录上)
rg ":call GotoFile\("
yzl\my_plugins\open_file_under_cursor.vim\plugin\open_file_under_cursor.vim
39:nnoremap gf :call GotoFile("")<CR>
40:nnoremap <C-W>f :call GotoFile("new")<CR>
41:nnoremap <C-W><C-F> :call GotoFile("new")<CR>

2. RG执行原则

  • 你的每一次查找都有一个搜索主题
  • 没得每一个搜索主题都包含若干链接
  • 你的每一次查找都可以被记录,并被快速追溯,并被归纳在一个主题下

下面是一些记录的不错rg操作命令

  • 命令行下使用rg
    • rg "支持"
    • rg injectDependency
    • rg -tpy foo 将搜索限制为 Python 文件,
    • rg -Tjs foo 不包括 JavaScript 你搜索的文件
    • rg 注意使用双引号(cmd和ubuntu有所不一,需要测试)
    • rg -g "*.java" 可以glob所有java文件,并对他们进行其他搜索(类似-tjava或者--type java)
    • rg -g "!*.java" !排除所有java文件结尾的文件(该结果可能会更多些)
    • rg --replace or -r : 替换!
    • rg --type-add ‘web:*.{html,css,js}" -tweb "hello" 自定义类型(rg --type-list 可以看到所有type)
    • rg "addSharedFunction\(.*\)" 所有addSharedFunction函数 注意记住上述搜素的画面中的行号,这样在vim窗口中,可以直接定位到对应行
    • rg --files . |rg "文件名字" 搜索当前目录下的文件名字小技巧
  D:\codeRoom\java\jfinal>rg "setInjectDependency\("
  src\main\java\com\jfinal\config\Constants.java
  206:            controllerFactory.setInjectDependency(getInjectDependency());
  219:    public void setInjectDependency(boolean injectDependency) {
  220:            AopManager.me().setInjectDependency(injectDependency);

  src\main\java\com\jfinal\core\ControllerFactory.java
  26:     public void setInjectDependency(boolean injectDependency) {

  src\main\java\com\jfinal\aop\AopManager.java
  48:     public void setInjectDependency(boolean injectDependency) {
  

3. FG执行步骤

有时候我们也可以通过fg 进行文件的搜索。

  • fd “app” 搜索带app字符的文件
  • fd -e jpg 搜索所有jpg文件结尾的文件
  • fd -E jpg 搜索所有文件,并排除jpg文件结尾
  • fd -e jpg -a 搜索所有jpg文件结尾的文件,并以绝对路径输出
  • fd -e jpg –exec

4. ctags执行步骤

Universe ctags 可以生成一定源码文件的函数、字段标识符。

  • ctags -R *
  • ctags -R –force-language=java -R ./src
  • ctags –list-languages

配置方法:

set tags+=./tags
set tags+=D;/java/tags  

可以添加多个tags路径,自动支持绝对路径,即其他代码库的tags可以添加到被引用库中,只要在vim配置添加好该tags绝对路径。

5. 接口rg查阅

通过 rg fd 查看jfinal终端界面返回的接口和java源文件信息

func

echarts

6. copy file name absolute path

配合上,cp也可以获得对应文件的绝对路径,很方便

""""""""""""""""""""""""""""""""""Copy file name""""""""""""""""""""""""""""""""""
"" for vim-copy-filename
nmap <leader>cP :CopyRelativePath<CR>
nmap <leader>cl :CopyRelativePathAndLine<CR>
nmap <leader>cp :CopyAbsolutePath<CR>
nmap <leader>cf :CopyFileName<CR>

nmap <leader>cd :CopyDirectoryPath<CR>

7. ignore-file

    rg  "email"  --ignore-file .gitignore

.gitignore


target/
*.map
*.json
*.min.css
*.min.js
Related