Build vim development environment on CentOS6.2 Recommended reading: CentOS6.3 install spf13-vim http://www.centoscn.com/image-text/install/2013/0721/391.html Linux shortcut commands to organize http: // w in CentOS 6.2 to build a vim development environment Recommended reading: CentOS 6.3 install spf13-vim http://www.centoscn.com/image-text/install/2013/0721/391.html Linux Vim shortcut key operation command sorting http://www.centoscn.com/CentOS/help/2013/0721/390.html Install the Vim dependent package on CentOS http://www.centoscn.com/image-text/install/2013/0721/392.html 1. First, use Ubuntu (ip address: 192.168.16.230) to log on to the firewall. http://www.vim.org/ Download the vim plug-ins above to the Ubuntu download directory: cd ~ /Download/ http://ctags.sourceforge.net Http://cscope.sourceforge.net/ http://www.vim.org/ Scripts/script. php? Script_id = 1, 273 http://www.vim.org/ Scripts/script. php? Script_id = 1, 1581 http://www.vim.org/ Scripts/script. php? Script_id = 1, 197 http://www.vim.org/ Scripts/script. php? Script_id = 95 http://www.vim.org/ Scripts/script. php? Script_id = 1, 159 http://www.vim.org/ Scripts/script. php? Script_id = 31 http://www.vim.org/ Scripts/script. php? Script_id = 1, 2620 http://www.vim.org/ Scripts/download_script.php? Src_id = 1, 9679 http://www.vim.org/ Scripts/script. php? Script_id = 42 http://www.vim.org/ Scripts/script. php? Script_id = 311 use sftp to upload these packages to the target server CentOS 6.2 above cd/usr/local/srcsftp root@192.168.16.237lsput a. vim *** quit to exit sftp and start installation below. 2. create a directory in the main directory and start installing mkdir-p. vim/pluginmkdir-p. vim/docmkdir-p. vim/tagsmkdir-p ~ /. Vim/syntax transfers the above package ~ /. Vim/below, install plug-ins one by one: 2.1 ctags plug-in (Exuberant Ctags) to generate the tag file plug-in, from the following official website http://ctags.sourceforge.net Download to the source code package ctags-5.8.tar.gz, the following uses the source code installation method tar zxvf ctags-5.8.tar.gzcd./configuremakemake installcd ../found that ctags is an executable file, is copied to/usr/local/bin below. You can use ctags -- help to view the command options of the execution file. The tags file is an index file generated by the ctags program. The ctags program is actually called "Exuberant Ctags". it is a substitute for the ctags program on Unix and is more powerful than it, it is the default ctags program in most Linux releases. 2.2 taglist plug-in this is a plug-in that browses source code. you can directly decompress the compressed package to automatically install unzip taglist_46.zip. each file taglist.vimand taglist.txt are generated in pluginand doccorrespondingly in my. in vimrc, the following configuration is shown: let Tlist_Show_One_File = 1 "show the tags of multiple files at the same time, only show the current file's let Tlist_Exit_OnlyWindow = 1" if the taglist window is the last window, exit vimlet Tlist_Use_Right_Window = 0 ". the taglist window is displayed in the right window (0 by default ). The ist plug-in requires the tags file, so it requires the tags file generated by ctags or csflood. That is to say, these plug-ins are closely linked. 2.3 The Lookup plug-in uses the insert completion method to quickly search for files, cache areas, and directory plug-ins in the project. http://www.vim.org/ Scripts/scipt. php? Script_id1_1581download source code package lookupfile-1.8.zip to install unzip lookupfile-1.8.zipwill be generated separately under doc,inin,autoloaddirectory lookupfile.txt, lookupfile. vim and lookupfile. vim note that the autoload directory is automatically generated. The Lookupfile plug-in also requires the latest genutils plug-in support. Otherwise, You will receive a warning when You open vim: lookupfile: You need a newer version of genutils. vim plugin from the address below http://www.vim.org/ Scripts/script. php? Script_id1_197get to genutils-2.5.zip, the unzip genutils-2.5.zip can be automatically installed directly after decompression, it is found that it has put the file genutils in the autoload and plugin directory. vim Lookupfile uses the tags file when searching for objects. it can use the tag file generated by the ctags command, but the efficiency is relatively low, we generate a tag file that contains all file names in the project. The following is the specific steps: I wrote the following shell script make_lookupfile_tag.sh, for the trafficserver-3.2.4 source code, generate a file name tag file. #! /Bin/bash # generate tag file for lookupfile pluginecho-e "! _ TAG_FILE_SORTED \ t2 \ t/2 = foldcase/"> filenametagsfind. -not-regex '. *\. \ (png \ | gif \) '-type f-printf "% f \ t % p \ t1 \ n" | \ sort-f> filenametags recall that we use tags in) the format of the tag file described in the document. Compare with the script Command: The echo command is used to generate "! _ TAG_FILE_SORTED "indicates that the tag file is sorted. The find command is used to find all common files with a suffix of .png and .gif. the files are output in the format of "file name \ t file path \ t1. The sort command sorts the output of the find command again, and then writes it to the filenametags file in ~ Run the script in the/program_dev/trafficserver-3.2.4/directory, chmod + x make_lookupfile_tag.sh/bin/bash make_lookupfile_tag.sh will generate a file named filenametags, contains the names of all files under the trafficserver-3.2.4 directory and their directories, which you can open to view and verify. Now we need to let the lookupfile plug-in know where to find the file name tag file. Assume that the current vim working directory is ~ /Program_dev/trafficserver-3.2.4/, execute the following command: let g: LookupFile_TagExpr = '". /filenametags "'note: If the value of g: LookupFile_TagExpr is not set, the lookupfile plug-in uses the file defined by the tags option as its tag file. When the previous session is restored, the tag file is defined for the lookupfile plug-in. Now we can use lookupfile to open the file. press" "Or input": LookupFile "opens a lookupfile window above the current window and starts to enter the file name (at least 4 characters). with your input, eligible files are listed in the drop-down list. The file name can use the vim regular expression, which greatly facilitates file search. You can use CTRL-N and CTRL-P to select the file you need from the drop-down list. After selecting the file, press enter to open the file in the previous window. 2.4 cssag plug-in TAB jump plug-in, download from the following URL http://cscope.sourceforge.net/ To the source code package cscope-15.8a.tar.gz, the following source package installation: tar zxvf cscope-15.8a.tar.gzcd. /configuremakemake installcd .. /note that the path of the which csscope executable file is/usr/local/bin/cscopecscope by running the following command. First, you need to go to your project directory, for example, a cssag database is generated under the trafficserver-3.2.4, that is, an index file. Cscope only scans all files during the first parsing. when cscope is called later, it only scans the modified files, which greatly improves the indexing speed of cscope. 2.5 BufExplore plug-in buffer file browser plug-in, download from the address below http://vim.sourceforge.net/scripts/script.php?script_id=42 Directly decompress the package to automatically install unzip bufexplorer-7.3.6.zip. the bufexplorer.txt and bufexplorer. vim files will be separately installed in the docand plugindirectory. 2.6 winmager plug-in this plug-in controls the layout of each plug-in the vim window display, download from the address below http://vim.sourceforge.net/scripts/script.php?script_id=95 Enter the winmanager.zip file. Unzip winmanager.zip ~ Decompress the/. vim/Directory. this will decompress the following file ~ /. Vim/plugin and ~ /. In the vim/doc Directory: plugin/winmanager. vim-winmanager plug-in plugin/winfileexplorer. vim-improved Explorer plug-in/wintagexplorer. the tag plug-in provided by vim-winmanager is of little use. doc/winmanager.txt-Help File Note: The winmanager plug-in must be used with the BufExplorer plug-in to use 2.7 directly *. plug-ins such as vim currently have. vim, // Set. H file and. c file switch back and forth minbufexpl. vim // allows you to quickly browse and operate the Buffer. you can switch between them and copy them ~ /. Vim/plugin/The following figure shows the 2.8 vim built-in plug-in QuickFix compilation and error correction. the query result window is displayed. the new-omni-completion all-around complement 2.9 NeoComplCache plug-in automatically complements the plug-in ,: http://www.vim.org/scripts/script.php?script_id=2620 Unzip the downloaded compressed package neocomplcache-8.0.zip using the following command unzip neocomplcache-8.0.zip to decompress the files in the folder, it seems to be four, autoload, doc, plugin, vest, README. MD, will be automatically placed under the. vim folder. In ~ /. Add the automatic startup command in the vimrc File: let g: neocomplcache_enable_at_startup = 1. 2.10 check the built-in documents of the plug-in. Note that the documents of the plug-in have been placed in $ HOME /. now that the vim/doc directory is under, enter the vim command: helptags $ HOME /. vim/doc, vim will automatically read $ HOME /. enter "help local-additions" for the document under the vim/doc directory to jump to $ HOME /. select the desired document from the list of all documents in vim/doc. We can see that the plug-ins we have installed include taglist, lookupfile, bufexplorer, and winmanager plug-ins. 2.11 install the vim Chinese help document. the main page of the vim Chinese document is: http://vimcdoc.sourceforge.net/ It translates the help file of vim into Chinese characters and supports the latest vim 7.3. To use the vim Chinese document (. cnx file), follow these steps: cd ~ /. Vim/$ wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.8.0.tar.gz (Note that this is not the real address, just for example) tar zxvf vimcdoc-1.8.0.tar.gzllcd vimcdoc-1.8.0sudo. /vimcdoc. sh-icd .. /these documents will be installed in/usr/share/vim/,/usr/share/doc and other directories. Start vim and enter: help to see if the help document has become Chinese? 2.12 find the plug-in the grep plug-in project and download it from the address below http://www.vim.org/scripts/script.php?script_id=311 Put the obtained grep. vim directly ~ /. Vim/plugin. Note: 1) the vim Chinese document does not cover the original English document. after installation, vim uses the Chinese document by default. To use the English document, run the following command in vim: set helplang = en similarly, use the following command to re-use the Chinese document: set helplang = cn2) run the following command to uninstall the vim Chinese document: sudo. /vimcdoc. sh-u3) the text of the help file is UTF-8 encoded. if you want to use vim to view it directly, you need ~ /. Set in vimrc: set encoding = UTF-8 2.12 syntax highlighting common requirements are to change the color scheme. The settings are as follows: first in your ~ /. Add the following sentence to the vimrc File: syntax enablesyntax on Selects the color scheme you like. make settings in the vimrc file, such as colorscheme desert, which is more personalized and allows operators, brackets, function names, custom types, and so on to highlight source files in various languages (such as c, c ++, php, python, etc.) to create a new syntax file, respectively stored in/usr/share/vim/vim72/syntax/c. in vim, the C language is used as an example to create a file ~ /. Vim/syntax/c. add the following content to vim: ============================== "Highlight All Function" ====================== ========================================================== = syn match cFunction "/<[a-zA-Z _] [a-zA-Z_0-9] */> [^ ()] *) ("me = e-2syn match cFunction"/<[a-zA-Z _] [a-zA-Z_0-9] */>/s * ("me = e-1hi cFunction gui = NONE guifg = # B5A1FF "============================================== ====================== "Highlight All Math Opera Tor "============================================ ====================== "C math operatorssyn match cMathOperator display" [-+/*/% =] "C pointer operatorssyn match cPointerOperator display "->/| /. "" C logical operators-boolean resultssyn match cLogicalOperator display "[! <>] =/= "Syn match cLogicalOperator display" = "" C bit operatorssyn match cBinaryOperator display "/(&/|/^/| < >/) = // = "Syn match cBinaryOperator display "/~ "Syn match cBinaryOperatorError display "/~ = "" More C logical operators-highlight in preference to binarysyn match cLogicalOperator display "&/|" syn match cLogicalOperatorError display "/(&/| /) = "" Math Operatorhi ~guifg = # 3EFFE2hi ~guifg = # 3EFFE2hi ~guifg = # 3EFFE2hi ~guifg = # 3EFFE2hi ~guifg = # 3EFFE2hi ~guifg = # {clogicaloperatorerror gu Ifg = #3EFFE2 open your C file again to see if it is much brighter. there is also a press box to tell you, if you add a type or structure, how to make it highlighted like "int", "void? Next, in the above file ~ /. Vim/syntax/c. add the following stuff in vim: "============================================== ==================== "My Own DataType" ============================ ============================================== syn keyword cType My_Type_1 My_Type_2 My_Type_3 your own type My_Type_1, my_Type_2 and My_Type_3 can be highlighted like "int". The disadvantage is that you need to manually add each type here, if anyone knows a simpler method, please be sure to tell me
3. configure the. vimrc file. when vim is started, if vimrc or gvimrc is not found, it works in the VI-compatible mode by default. This means that you can only use the functions available in VI, but a large number of expansion functions in vim will not be available. Maybe this is why your vim is so difficult to use. Vim comes with a vimrc example, taking my example on CentOS 6.2, run the following command to find the locate vimrc_example.vim file and find its actual directory. copy it to the cp-f/usr/share directory under/usr/share/vim/vim72/vimrc_sample.vim to copy it to my home directory. /vim/vim72/vimrc_sample.vim ~ /. Vimrc or you can execute the following command in vim to perform the same functions as the preceding shell command ::! Cp $ VIMRUNTIME/vimrc_example.vim ~ /. Vimrc now, you exit vim and enter again. your vim is different from the previous one. You can read your vimrc and see what it sets: e ~ /. Vimrc this is a well-annotated file and does not need to be explained. In the days to use vim, you will frequently change your vimrc. Therefore, we need to set some shortcuts so that we can quickly access vimrc. Copy the following content to your vimrc: 1 "Set mapleader2 let mapleader ="; "34" Fast reloading of the. vimrc5 map Ss: source ~ /. Vimrc 6 "Fast editing of. vimrc7 map Ee: e ~ /. Vimrc 8 "When. vimrc is edited, reload it9 autocmd! Bufwritepost. vimrc source ~ /. Vimrc for ease of explanation, I add a row number to each row. In vimrc, rows starting with double quotation marks are ignored as comments. Row 3 is used to set the mapleader variable. when mapleader is not set or empty, the default "\" is used as the mapleader. What is the role of the mapleader variable? See the following introduction. Row 5th defines a map. Ss, ING to command: source ~ /. Vimrc . When defining a ing, you can use Prefix. When the ING takes effect, vim Replace it with the value of the mapleader variable. That is, what we define here When the ss is used, it becomes ", ss". when you enter this shortcut, it will be source once ~ /. Vimrc File (that is, re-execute the. vimrc file ). Row 3, defined Ee shortcut key. it is enabled when ee is entered ~ /. Vimrc. Line 3 defines an automatic command. this automatic command is executed every time. vimrc is written ~ /. Vimrc file. With the preceding shortcut key, we can quickly open the vimrc file and edit the file again. For configuration files, see the. vimrc file provided by Zhao Pan. Note: The final source code structure is similar to the following :~ -- | --. Vimrc | --. vim -- |-plugin -- |-doc -- |-autoload |-vest 4. practical experience 4.1 download a trafficserver source code, and take this as an example to illustrate the use of vim development method login 192.168.16.237, and in the current home directory to create a new program_dev directory ssh root@192.168.16.237cd ~ /Mkdir program_devwget http://mirror.esocc.com/apache/trafficserver/trafficserver-3.2.4.tar.bz2 After the download is complete, decompress the tar jxvf trafficserver-3.2.4.tar.bz2ll Note: Use the first to generate three types of labels, ctags, csags and lookupfile plug-ins need to use the tags. 4.2 generate the ctags tag (refer to the following method to generate the tags and set) the ctags-R trafficserver-3.2.4 will generate a file named tags in the trafficserver-3.2.4 peer directory now enters the vim environment and enter the following command: cd ~ /Program_dev/trafficserver-3.2.4 "switch to the current source directory: set tags = ~ /Program_dev/tags "set the tags option to the tags file in the current directory. Note that you must specify the absolute path for setting tags here. otherwise, many functions cannot be found. The tags file is a plain text file. you can use vim to open it. In addition, according. in vimrc configuration, use the following shortcut keys to generate the tags file and cssag file cd trafficserver-3.2.4find 'pwd'-name "*. cpp "-o-name "*. cc "-o-name "*. c "-o-name "*. h "> cscope. filescscope-bqk-I csscope. filesctags and cstagwill automatically differentiate and process their respective indexes. Pay attention to the cssag method. when generating an index file, cssag only searches for files in c, lex, and yacc (with the suffix. c ,. h ,. l ,. y). to generate a file index for c ++, you must use the above method to generate a file list cs.pdf. files, and then let csflood generate an index for each file in the list. Write the above content as a script make_cscope_ctags_index.sh with the following content :#! /Bin/bash find. -name "*. h "-o-name "*. c "-o-name "*. cc "> cscope. filescscope-bkq-I cs.pdf. filesctags-R is saved in ~ /. Vim/, now copy it to the trafficserver-3.2.4 and run the following command/bin/bash make_cscope_ctags_index.sh to generate the following file cs.pdf under the trafficserver-3.2.4. filescscope. in. outcs.pdf. outcs.pdf. po. outtags is analyzed by cscope. files, we see a lot of files. Now update the tags settings: set tags = ~ /Program_dev/trafficserver-3.2.4/tags so far, we have set the tags option, and then start to use it: enter the vim-t main command in the current command line to open the file defining "main" (variables, functions, or other), and position the cursor to this line. When browsing the source code, when you want to query the definition of a function, place the cursor on the function and press To jump to the definition of the function, press Key is returned. Note: when running vim, you must run it in the directory where the "tags" file is located. Otherwise, run the ": settags =" command to set the path of the "tags" file so that vim can find the "tags" file. When coding, you can manually delete the tags file (the hacker cannot get it, and the dust won't run away by yourself ^_^ ). Now open the main function in the file numbered 43 and press F9 to open winmanager. according to the settings, three window la S will appear. If multiple files (multiple buffers) are opened, the fourth window, MiniBufExplorer, appears in the most recent window. Press Ctrl and then press W continuously. the switch between Windows is switched back and forth in a counter-clockwise order. Of course, according to Zhao Pan's documents, using F2 also plays the same role. Press F9 again to close the winmanager window layout. When you select a window, you can use vim to move the mouse to select different labels, such as gg, G, and other shortcut keys. Place the cursor in the file where the main function is located, place the cursor on a function, and press Ctrl +] to jump to the defined position of the function. 4.3 when you use vim to open multiple files, a MiniBufExplorer window appears at the top of vim, listing all the currently opened buffers, when you place the cursor in this window (when you are in the winmanager window layout, use Ctrl + W to switch in turn), you can use the following shortcut keys: Switch to each buffer name in the forward loop Switch back to each buffer name When you open the bufferd where the cursor is located and delete the buffer where the cursor is located, MiniBufExplorer will not work when you edit only one buffer. when you open the second buffer, the MiniBufExplorer window will pop up automatically, 4.4bufexplorer: Use the plug-in to open vim. input \ be to browse the cache in the current window, \ bs to open a window to browse the cache horizontally, and \ bv to open a window to browse the cache vertically. However, in the Filelist and taglist windows, you can move the cursor up and down, and use the four key notes: cw change-word to change to the end of the next word, the shortcut keys for the space 4.5Taglist window after the word are not included are displayed in the taglist window. you can use the following shortcut keys: Jump to the position defined by the tag under the cursor, double-click the tag with the mouse, and the tag function is the same. o display the tag under the cursor in a new window. Displays the prototype definition of the tag under the cursor. the tags in the u update taglist window changes the sorting mode. The x taglist window is scaled up or down between name-based sorting and order-based sorting, for ease of viewing long tag + open a fold, with zo-fold the tag, with zc * open all the fold, with zR = fold all the tags, same as zM [[jump to previous file] jump to next file q close taglist window You can use ": TlistOpen" to open the taglist window and use ": TlistClose" to close the taglist window. You can also use ": TlistToggle" to switch between open and close. In my vimrc, the following ING is defined, using Key to open/close the taglist window: map : TlistToggle Classification is performed based on "typedef", "variable", and "function. move the cursor over VimMain, the red box on the left, press enter, the source program will automatically jump to the definition of VimMain, the red box on the right. this is the most basic and commonly used TagList operation. When browsing the TagList window, if you do not want to jump to the source code, but want to see the complete expression of the tag in the source code, you can move the cursor to the tag you want to see, and press the space key. in the command bar below, the yellow box below will show the complete syntax of the tag in the source code, rather than jump to the source code. 4.6cscope usage it is very easy to use cscope in vim. First, call the "cscope add" command to add a cscope database, and then you can call the "cscope find" command to search for it. Vim supports the query functions of eight cscope, such as: s: Find the C Language symbol, that is, find the place where the function name, macro, enumeration value, and so on appear g: find the location defined by functions, macros, and enumerations, similar to the function d provided by ctags: find the function c called by this function: find the function t that calls this function: find the specified string e: find the egrep mode, which is equivalent to the egrep function, but the search speed is much faster f: find and open the file, similar to the find function of vim I: find the files that contain this file. for example, if we want to find the function that calls the do_cscope () function in the source code of vim 7.0, we can enter: ": cs find c do_cscope", after you press enter, you will find that the matching function is not found, and do_cs1_() may not be called by the function (). Enter ": cs find s do_cscope" to find the location where the C symbol appears. now vim lists all the locations where the symbol appears. We can also search for strings, which are enclosed by double quotation marks or single quotation marks. You can also enter a regular expression, which is similar to the function of the egrep program, but it is searched in the cross-index database, which is much faster. The main function of cssag is to use the same sub-command "find" to implement "cssag find: cs find c | d | e | f | g | I | s | t name0 or s find the C symbol (you can skip the annotation) 1 or g search for function 3 or c called by this function 2 or d search for function 4 or t called by this function search for this function 6 or e search for this egrep Mode 7 or f find this file 8 or I find the file vim that contains this file provides some options to adjust its cscope function: the cscopecscopeprg option is used to set the location of the cscope program. Cscopecscopequickfix: Specifies whether to use the quickfix window to display cssag results. For more information, see ": help cscopequickfix". if you want vim to search tag files and cssag databases at the same time, set the cscopecscopetag option; the cscopecscopetagorder option determines whether to first find the tag file or the cssag database. If it is set to 0, search for the cssag database first, and set it to 1 to search for the tag file first. I usually set it to 1, because the best match is listed in the first place in the result found in the tag file. The vim Manual provides a suggested method for using csbench. run the ": help csbench-suggestions" command to view the information. The following is the cssag interface settings in my vimrc: """""""""""""""""""""""""""""""""""""""" "cscope setting """""""""""""" """""""""""""""""""""""""""""""""""""""" "if has (" CSAs ") set csprg =/usr/bin/cscopeset csto = 1 set cstset nocsverb "add any database in current directoryif filereadable (" cscope. out ") cs add cscope. outendifset csverbendif nmap S: cs find s = Expand (" ") Nmap G: cs find g = Expand (" ") Nmap C: cs find c = Expand (" ") Nmap T: cs find t = Expand (" ") Nmap E: cs find e = Expand (" ") Nmap F: cs find f = Expand (" ") Nmap I: cs find I ^ = Expand (" ") $ Nmap D: cs find d = Expand (" ") First in ~ /Add a sentence in vimrc: set cscopequickfix = s-, c-, d-, I-, t-, e-. this is to set whether to use the quickfix window to display the csfix result, the usage will be discussed later. I want to find out where vim_strsave () has been called. run the command: cs find c vim_strsave and press Enter. vim will automatically jump to the first place that meets the requirements, in addition, the command bar displays the number of results that meet the requirements. if you are not satisfied with the automatic jump location and want to see other results, you can use the following command to open the QuickFix window: cw: 4.7 The main function of the quickfix window in the QuickFix window is the function shown above: outputs some selection results and can be called by many commands, for more detailed introduction and usage, use the following command to open the quick fix manual for learning: help QuickFix you can use the following command to jump to: cn // switch to the next result: cp // switch to the previous result. if you use these two commands frequently, you can set the shortcut keys for them, for example, in ~ /. Added nmap to vimrc. : Cn Nmap : Cp 5. question 5.1 what is the difference between cssag and ctags? The two can coexist. The former is more powerful, especially for searching strings. The former is more powerful. Ctags is the place to jump to the tag definition, but if you want to find where the function is called or where the tag has appeared, you need to use a more powerful csags. Cssag is a tool used on an interactive screen. it is designed to answer the following question: * where is this symbol used? * Where is this defined? * Where is this variable assigned a value? * Where is the definition of the global symbol? * Where is this function in the source file? * Which functions call this function? * What functions does this function call? * Where does the information "out of space" come from? * Where is the source file in the entire directory structure? * Which files contain this header file? This article from the Linux community website original article link: http://www.linuxidc.com/Linux/2013-07/87363p2.htm
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.