日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

practical vim2 笔记

發布時間:2024/5/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 practical vim2 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • windows capslock 修改映射為left-Ctrl
  • mark
  • 1. The Vim Way
  • 2. Normal Mode
  • 3. Insert Mode
  • 4. Visual Mode
  • 5. Command-Line Mode
  • 6. Manage Multiple Files
  • 7. Open Files and Save Them to Disk
  • 8. Navigate Inside Files with Motions
  • 9. Navigate Between Files with Jumps
  • 10. Copy and Paste
  • 11. Macros
  • 12. Matching Patterns and Literals
  • 13. Search
  • 14. Substitution
  • 15. Global Commands
  • 16. Index and Navigate Source Code with ctags
  • 17. Compile Code and Navigate Errors with the Quickfix List
  • 18. Search Project-Wide with grep, vimgrep, and Others
  • 19. Dial X for Autocompletion
  • 20. Find and Fix Typos with Vim’s Spell Checker
  • chang vim’s settings on the fly

windows capslock 修改映射為left-Ctrl

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1D,00,3A,00,00,00,00,00保存為 .reg 文件 執行即可

mark

! bang # hashtag & ampersand * asterisk _ underscore ` backtick ' apostrophe " quote : colon ; semicolon / slash \ backslash | pipe > greater-than | angle bracket < less-than | angle bracket () parentheses [] bracket {} curly brace

1. The Vim Way

. repeat last change(x dd >G AxxxEsc | moving around in insert mode reset the change)----------------------------------------------var foo = 1 var bar = 'a' var foobar = foo + bartwo for the price of one(all switch from normal to insert mode - help to construct dot formula) C c$ s cl S ^C I ^i A $a o A<CR> O ko----------------------------------------------var foo = "method("+argument1+","+argument2+")";----------------------------------------------repeatable actions and how to reverse them Ident Act Repeat Reverse Make a change {edit} . u Scan line for next character f{char}/t{char} ; , Scan line for previous character F{char}/T{char} ; , Scan document for next match /pattern<CR> n N Scan document for previous match ?pattern<CR> n N Perform substitution :s/target/replacement & u Execute a sequence of changes qx{changes}q @x u Repeat any Ex command any command @: u----------------------------------------------...We're waiting for content before the site can go live... ...If you are content with this, let's go ahead with it... ...We'll launch as soon as we have the content...----------------------------------------------Dot Formula = One keystroke to Move + One keystroke To Execute

2. Normal Mode

Vim's Normal Mode analogy to painting----------------------------------------------change : commands trigged from Normal, Visual, and Command-line modes, any text entered or deleted in Insert mode moving around in insert mode resets the change. repeat the most recent change u reverts the most recent changewe can make the undo command operate on words, sentences, or paragraphs just by moderating our use of the <Esc> key each pause leave and reenter Insert mode----------------------------------------------The end is nigh----------------------------------------------[count]<C-a> add [count] to the number at or after the cursor(default one) [count]<C-x> subtract [count] to the number at or after the cursor(default one).blog, .news { background-image: url(/sprite.png); } .blog { background-position: 0px 0px }Vim interprets numerals with a leading zero to be in octal notation rather than in decimal. set nrformats= (This will cause Vim to treat all numerals as decimal)----------------------------------------------Delete more than one wordI have a couple of questions.----------------------------------------------Operator-pending Mode : activated when we invoke an operator command, and then stopped until provided a motionoperator commands(when an operator command is invoked in duplicate, it acts upon the current line) c Change d Delete y Yank into register g~ Swap case gu Make lowercase gU Make uppercase > Shift right < Shift left = Autoindent ! Filter {motion} lines through an external programcustom operator gc comment/uncomment (vim-commentary plug)custom motion ae/ie entire file (vim-textobj-user vim-textobj-entire plug)dw 不刪前字符,刪后空格,停下單詞首字符daw 刪前字符,刪后空格,停下單詞首字符光標在行尾單詞時,刪前空格,停上單詞結尾diw 刪前字符,不刪后空格,停下單詞后空格cw 不刪除光標前字符,不刪除單詞之后空格,停留到單詞后空格caw 同dawciw 同diwyw 同dw yaw 同daw yiw 同diw p單詞:在當前字符后 粘貼p行:在粘貼到下一行

3. Insert Mode

insert mode chords(also work in vim's command line and external bash shell) <C-h> Delete back one character (backspace) <C-w> Delete back one word <C-u> Delete back to start of line----------------------------------------------Insert Normal Mode(insert's submode) : fire off a single normal mode command then return insert modeget back to normal mode <Esc> Switch to Normal mode <C-[> Switch to Normal mode <C-o> Switch to Insert Normal mode----------------------------------------------Practical Vim, by Drew Neil Read Drew Neil'svim's registers "" unamed register "a-z named register "0 yank register "_ black hole register "+ system clipboard register "* selection register "= expression register :reg "{reg} inspect register's contentpaste from a register in insert mode <C-r> {reg} paste reg's content <C-r><C-p> {reg} paste reg's content literally (ignore textwidth autoindent which lead to unwanted line breaks or extra indentation)----------------------------------------------evaluate expressions in insert mode <C-r>={vim script}<CR>----------------------------------------------ga : look up character's numeric code at current cursor positioninsert unsual characters by its numeric code <C-v>{123} Insert character by decimal code <C-v>u{1234} Insert character by hexadecimal code <C-v>{nondigit} Insert nondigit literally <C-k>{char1}{char2} Insert character represented by {char1}{char2} digraph----------------------------------------------Typing in Insert mode extends the line. But in Replace mode the line length doesn't change.Replace Mode(identical to Insert Mode except it overwrites existing text) R engage Replace Mode r engage Replace Mode for single character <Esc> return to Normal Mode <Insert> toggle between Insert and Replace modesVirtual Replace Mode(treats the tab character as though it consisted of spaces) gR engage Virtual Replace Mode gr engage Virtual Replace Mode for single character

4. Visual Mode

Action = Selection + operator commandSelect Mode(use c instead) : type any character will replace selection and switch to Insert Mode <C-g> toggle between Select Mode and Visual mode----------------------------------------------enabling Visual Mode v Enable character-wise Visual mode V Enable line-wise Visual mode <C-v> Enable block-wise Visual mode gv Reselect the last visual selectionswitching between Visual Modes v / V / <C-v> toggle between Normal mode and character-, line- or block-wise Visual mode, respectively <Esc> / <C-[> Switch to Normal mode o Go to other end of highlighted text----------------------------------------------def fib(n):a, b = 0, 1while a < n: print a, a, b = b, a+b fib(42)Tabs and Spaceshttp://vimcasts.org/transcripts/2/en/set ts=8 sts=0 sw=8 noexpandtab " default settingsinsert: <Tab> insert a tab char with width of 8 <BS> delete a tab char with width of 8normal: > prepend a tab char with width of 8 < delete a tab char with width of 8set ts=8 sts=0 sw=8 expandtabinsert: <Tab> insert 8 space chars <BS> delete single one spacenormal: > prepend 8 space chars < delete 8 space charsset ts=8 sts=8 sw=8 expandtabsame above except : insert <BS> delete 8 space charsset ts=8 sts=4 sw=4 expandtabinsert: <Tab> insert 4 space chars <BS> delete 4 space charsnormal: > prepend 4 space chars < delete 4 space charsany tab already existed it's width is 8set ts=8 sts=4 sw=4 noexpandtabsame above except : insert 2<Tab> become one true tab char <BS> one true tab char becomes 4 space charsnormal same as insertset ts=4 sts=4 sw=4 noexpandtabinsert: <Tab> insert a tab char with width of 4 <BS> delete a tab char with width of 4normal: > prepend a tab char with width of 4 < delete a tab char with width of 4any tab already existed shink it's width to 4----------------------------------------------<a href="#">one</a> <a href="#">two</a> <a href="#">three</a>----------------------------------------------Chapter Page Normal mode 15 Insert mode 31 Visual mode 44----------------------------------------------li.one a{ background-image: url('/images/sprite.png'); } li.two a{ background-image: url('/images/sprite.png'); } li.three a{ background-image: url('/images/sprite.png'); }----------------------------------------------var foo = 1 var bar = 'a' var foobar = foo + barI and A follows similar conventions in Visual-Block and Normal mode, but i and a not which are first half of a text object.

5. Command-Line Mode

ZZ :wq ZQ :q! :version 查看vim版本信息 和 .vimrc文件路徑 :echo $VIM 查看環境變量----------------------------------------------Command-Line Mode : enable Command-Line Mode / search prompt <C-r>= access the expression register <CR> execute the command <Esc> switch back to Normal ModeEx Commands That Operate on the Text in a Buffer :[range]print echoes specified lines :[range]delete [x] Delete specified lines [into register x] :[range]yank [x] Yank specified lines [into register x] :[line]put [x] Put the text from register x after the specified line :[range]t(copy) {address} Copy the specified lines to below the line specified by {address} :[range]move {address} Move the specified lines to below the line specified by {address} :[range]join Join the specified lines :[range]normal {commands} Execute Normal mode {commands} on each specified line :[range]substitute/{pattern}/{string}/[flags] Replace occurrences of {pattern} with {string} on each specified line :[range]global/{pattern}/[cmd] Execute the Ex command [cmd] on all specified lines where the {pattern} matches :[range]vglobal/{pattern}/[cmd] Execute the Ex command [cmd] on all specified lines where the {pattern} doesn't matches----------------------------------------------<!DOCTYPE html><!-- --><head><title>Practical Vim</title></head><!-- --><body><h1>Practical Vim</h1></body> </html><!-- --> <body><h1>Practical Vim</h1></body><!-- -->symbols that can be used to create address and ranges for Ex commands 1 First line of the file(line nubmers) $ Last line of the file 0 Virtual line above first line of the file . current Line where the cursor is placed 'm Line containing mark m'm '< first line of visual selection '> last line of visual selection % The entire file (shorthand for :1,$) :/<html>/+1,<\/html>/-1p pattern that uses offset----------------------------------------------Shopping listHardware StoreBuy new hammerBeauty ParlorBuy nail polish removerBuy nails:t command in action :6t. Copy line 6 to just below the current line :t6 Copy the current line to just below line 6 :t. Duplicate the current line (similar to Normal mode yyp) :t$ Copy the current line to the end of the file :'<,'>t0 Copy the visually selected lines to the start of the file----------------------------------------------var foo = 1 var bar = 'a' var baz = 'z' var foobar = foo + bar var foobarbaz = foo + bar + baz----------------------------------------------repeat last Ex command @: @@go back to previous record in the jump list <C-o>----------------------------------------------Tab-Complete Ex commands <Tab> scroll through all possible commands <S-Tab> scroll backward all possible commands <C-d> reveal a list of possible completions----------------------------------------------var tally; for (tally=1; tally <= 10; tally++) {// do something with tally };insert the current word at the command prompt <C-r><C-w> copies the word under the cursor and inserts it at the command-line prompt <C-r><C-a> copies the WORD under the cursor and inserts it at the command-line prompt----------------------------------------------recall commands from history <Up> go further back through Ex command/search history <Down> go in the opposite direction:write :!ruby %summon/close command-line window q: Open the command-line window with history of Ex commands q/ Open the command-line window with history of searches :q close the command-line window(line any other window) ctrl-f Switch from Command-Line mode to the command-line window----------------------------------------------first name,last name,email john,smith,john@example.com drew,neil,drew@vimcasts.org jane,doe,jane@example.comcalling external commands :!{cmd} firing one-off command in shell :shell start a interactive shell session (exit kills the shell and return to vim) :read !{cmd} Execute {cmd} in the shell and insert its standard output below the cursor :[range]write !{cmd} Execute {cmd} in the shell with [range] lines as standard input(default is whole buffer) :[range]!{filter} The lines specified by [range] are passed as standard input for the {cmd}, and then the output from {cmd} overwrites the original contents of [range].The !{motion} operator command drops us into Command-Line mode and prepopulates the [range] with the lines covered by the specified {motion}.putting vim in the background <Ctrl-z> suspend vim process jbos inspect the list of jobs fg resume a suspended job----------------------------------------------<ol><li><a href="/episodes/show-invisibles/">Show invisibles</a></li><li><a href="/episodes/tabs-and-spaces/">Tabs and Spaces</a></li> </ol>:source {filename} execute each line of {filename} as Ex commands :argdo ExCommand execute Ex command for each of the files in the argument list(launching vim with with a wildcard will populate the argument list)

6. Manage Multiple Files

buffer management :ls list all buffers :bnext switch to the next buffer :bprevious switch to the previous buffer :bfirst switch to the first buffer :blast switch to the last buffer :b {bufferNumber or bufferName} switch to designated buffer :bufdo execute an Ex command in all buffers :bdelete delete disigned bufferssymbols in ls command % indicates which of the buffers is visible in the current window # represents the alternate file(pressing <C-^> to toggle between current file and alternate file) + indicates that the buffer has been modified a active h hiddenhttps://github.com/tpope/vim-unimpaired----------------------------------------------arg management :args {arglist} show argument list if arglist ommited or set the content of the argument list(arglist can include filenames,wildcard,output from a shell command) :next switch to the next arg :previous switch to the previous arg :first switch to the first arg :last switch to the last arg :argdo execute an Ex command in all args----------------------------------------------:w[rite] Write the contents of the buffer to disk :e[dit]! Read the file from disk back into the buffer (that is, revert changes) :qa[ll]! Close all windows, discarding changes without warning :wa[ll] Write all modified buffers to disk(or use :first :wn to eyeball each file):set hidden use :next,:bnext,:cnext commands without a trailing bang----------------------------------------------dividing workspace into split windows <C-w>s Split the current window horizontally, reusing the current buffer in the new window <C-w>v Split the current window vertically, reusing the current buffer in the new window :sp[lit] {file} Split the current window horizontally, loading {file} into the new window :vsp[lit] {file} Split the current window vertically, loading {file} into the new windowchange the focus between windows <C-w>w Cycle between open windows <C-w>h Focus the window to the left <C-w>j Focus the window below <C-w>k Focus the window above <C-w>l Focus the window to the rightclose window :clo[se] <C-w>c Close the active window :on[ly] <C-w>o Keep only the active window, closing all othersresize window <C-w>= Equalize width and height of all windows <C-w>_ Maximize height of the active window <C-w>| Maximize width of the active window [N]<C-w>_ Set active window height to [N] rows [N]<C-w>| Set active window width to [N] columns----------------------------------------------setting window's working directory :lcd {path} set the working directory for the current window :windo lcd {path} set the working directory for the current tab pageopen and close tabs :tabedit {filename} Open {filename} in a new tab(if filename omitted create a new tab page containing empty buffer) <C-w>T Move the current window into its own tab :tabclose Close the current tab page and all of its windows :tabonly Keep the active tab page, closing all othersswitching between tabs :tabn[ext] {N} {N}gt Switch to tab page number {N} :tabn[ext] gt Switch to the next tab page :tabp[revious] gT Switch to the previous tab pagerearrange tabs :tabmove [N] rearrange current tab page if N=0 move to the begining if N is omitted move to the end

7. Open Files and Save Them to Disk

:pwd print working directory :edit {file} open files(specified an absolute or relative path) %:h expands to filepath of the active buffer but removed the filenamecnoremap <expr> %% getcmdtype() == ':' ? expand('%:h').'/' : '%%'----------------------------------------------:find open file by its name :set path+= specify a set of directories inside of which vim will search when :find is invoked ----------------------------------------------netrw vim . start up with a file explore window :edit {dir} Open file explorer for designated directory :edit . Open file explorer for project root :edit %:h Open file explorer for current file :Explore Open file explorer for current file :Sexplore open file explorer for current file in a horizontal split :Vexplore open file explorer for current file in a vertical split----------------------------------------------save files to Nonexistent Directories :e {nonexistentFile} create a new empty buffer <C-g> echos the name and status of the current file :!mkdir -p %:h create nonexistent directories----------------------------------------------save files as the super user :w !sudo tee % > /dev/null

8. Navigate Inside Files with Motions

_ soft bol g_ soft eol ctrl + f/b move to page down/up ctrl + e/y move to line down/up zz/zt/zb scroll cursor to middle/top/bottom----------------------------------------------move the cursor around h move One column left (use word-wise or character search motions to move horizontally) l move One column right j move One line down k move One line up----------------------------------------------commands for interacting with real and display lines j Down one real line gj Down one display line k Up one real line gk Up one display line 0 To first character of real line g0 To first character of display line ^ To first nonblank character of real line g^ To first nonblank character of display line $ To end of real line g$ To end of display line ----------------------------------------------Go fast.commands for move the cursor forward and backward w/W Forward to start of next word b/B Backward to start of current/previous word e/E Forward to end of current/next word ge/gE Backward to end of previous word----------------------------------------------character-search commands(working butifully with operator-pending mode)(use capital letter/punctuation mark char) f{char} Forward to the next occurrence of {char}(used to move within current line in normal mode) F{char} Backward to the previous occurrence of {char} t{char} Forward to the character before the next occurrence of {char}(used with c/d in operator-pending mode) T{char} Backward to the character after the previous occurrence of {char} ; Repeat the last character-search command , Reverse the last character-search command f,dt. delete the last clause of a sentenceuser-defined commands \ default leader key noremap <Leader>n nzz noremap <Leader>N Nzz----------------------------------------------search command(work with normal/visual/operator-pending modes) /xxx----------------------------------------------var tpl = ['<a href="{url}">{title}</a>' ]text objects interact with delimiters(first char is always a or i) a) or ab A pair of (parentheses) i) or ib Inside of (parentheses) a} or aB A pair of {braces} i} or iB Inside of {braces} a] A pair of [brackets] i] Inside of [brackets] a> A pair of <angle brackets> i> Inside of <angle brackets> a’ A pair of 'single quotes' i’ Inside of 'single quotes' a" A pair of "double quotes" i" Inside of "double quotes" a` A pair of `backticks` i` Inside of `backticks` at A pair of <xml>tags</xml> it Inside of <xml>tags</xml>----------------------------------------------text objects interact with chunks of text(words,sentences,paragraphs) iw word aw word plus space(s) iW WORD aW WORD plus space(s) is sentence as sentence plus space(s) ip paragraph ap paragraph plus blank line(s)i usually work with c{motion} a wusuall york with d{motion}/y{motion}----------------------------------------------mark m{a-zA-Z} marks current cursor location with designated letter(lowercase marks are local to each individual buffer, uppercase marks are globally accessible) '{mark} move to mark positioning the cursor on the first none-whitespace character `{mark} move to mark positioning the cursor to the exact position where the mark was setVim's automatic marks `` last jump `. last change `^ last insertion `[ Start of last change or yank `] End of last change or yank `< Start of last visual selection `> End of last visual selection----------------------------------------------cities = %w{London Berlin New\ York}http://github.com/tpope/vim-surroundjump between matching parenthese % jump between opening and closing sets of parentheses(such as () [] {} )

9. Navigate Between Files with Jumps

traverse Vim's jump list :jump inspect the jump list <C-o> jump backward <C-i> jump forwardjumps(each separate window has its own jump list) % Jump to matching parenthesis (/) Jump to start of previous/next sentence {/} Jump to start of previous/next paragraph H/M/L Jump to top/middle/bottom of screen [count]G Jump to line number /pattern<CR>/?pattern<CR>/n/N Jump to next/previous occurrence of pattern gf Jump to file name under the cursor <C-]> Jump to definition of keyword under the cursor `{mark}/’{mark} Jump to a mark----------------------------------------------traverse Vim's change list(each individual buffer has its own change list) g; jump backward g, jump forward :changes jump listgi restore the cursor position and then swithch back into insert mode----------------------------------------------jump to the filename under the cursor gf goto the filename under the cursor :set suffixesadd+= specify extensions which Vim will attempt to use when looking up a filename with gf command :set path+= specify directories which Vim will attempt to use when looking up a filename with gf command ----------------------------------------------snap between files using global marks(global marks are persisted between editing sessions) m{A-Z} make global marks `{A-Z} jump to global marks

10. Copy and Paste

collection = getCollection(); process(somethingInTheWay, target);using unamed register xp transpose two characters ddp transpose two lines yyp duplicate current line----------------------------------------------commands can be prefixed with register x,s,d{motion},c{motion},y{motion}readonly registers(value set implicitly) "% Name of the current file "# Name of the alternate file ". Last inserted text ": Last Ex command "/ Last search pattern----------------------------------------------I like chips and fish.Replace a Visual Selection with a Register p command in Visual mode, it gets the contents of the unnamed register, and it sets the contents of the unnamed register----------------------------------------------<table><tr><td>Symbol</td><td>Name</td></tr></table>Paste from a register p put the content of a register after the cursor position P put the content of a register before the cursor position gp same as p but leave the cursor positioned at the end of the pasted text instead of at the beginning gP same as P but leave the cursor positioned at the end of the pasted text instead of at the beginningduplicat text as a template gP----------------------------------------------[1,2,3,4,5,6,7,8,9,10].each do |n|if n%5==0puts "fizz"elseChapter 10. Copy and Paste ? 158report erratum ? discussputs nend endpasting from the system clipboard :set autoindent preserve the same level of indentation each time we create a new line :set pastetoggle=<f5> press <f5> to toggle the paste option on and off system paste command use system paste command in Insert mode "+p paste the content of system clipboard if Vim with system clipboard integration

11. Macros

macro q{reg} recording a macro @{reg} play back a sequence of commands by executing a macro @@ play back the most recent macro being palyed :reg {reg} inspect the content of register----------------------------------------------record a macro normalize the cursor position strike your target with a repeatable motion abort when a motion fails----------------------------------------------play back macro with a count {count}@{reg} play designated count times of macro except motion fails and the macro aborts----------------------------------------------1. one 2. two // break up the monotony 3. three 4. fourexecuting the macro in series {count}@{reg} executing the macro in parallel :'<,'>normal @a----------------------------------------------Append Commands to a Macro q{A-Z}{commands}q----------------------------------------------# ...[end of copyright notice] module Rankclass Animal# implementation...end end----------------------------------------------partridge in a pear tree turtle doves French hens calling birds golden rings----------------------------------------------1. One 2. Two 3. three 4. fourkeyboard codes in macros ^[ Esc <80>kb backspace ^J <CR>

12. Matching Patterns and Literals

tune the case sensitivity of search pattern \c\C setting case sensitivity per search (c causes search pattern case incensitive) :set smartcase if pattern is all lowercase then search will be case incensitive :set ignorecase make Vim's search pattern case incensitive----------------------------------------------body { color: #3c3c3c; } a { color: #0000EE; } strong { color: #000; }magic search(default (){| have to be escaped to confer special meaning) /#\([0-9a-fA-F]\{6}\|[0-9a-fA-F]\{3}\)very magic search(all characters assume a special meaning except _ letters digits) /\v#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) /\v#(\x{6}|\x{3})----------------------------------------------The N key searches backward... ...the \v pattern switch (a.k.a. very magic search)...very nomagic search(only backslash has a special meaning) /\Va.k.a.----------------------------------------------I love Paris in the the springtime.use parenthese to capture submatches /\v<(\w+)\_s+\1> /\v(%(And|D)rew) (Neil) :%s//\2, \1/g----------------------------------------------the problem with these new recruits is that they don't keep their boots clean.stake the boundaries of word /\<the\> < item as \W\zs\w, and the > item as \w\ze\W In very magic searches, the naked < and > characters are interpreted as word delimiters in magic, nomagic, and very nomagic searches we have to escape them.indirectly use of word boundary * #g* g# perform search without word delimiters----------------------------------------------Match "quoted words"---not quote marks.stake the boundaries of a match /Pratical \zsVim /\v"\zs[^"]+\ze"<CR>----------------------------------------------Search items: [http://vimdoc.net/search?q=/\\][s] [s]: http://vimdoc.net/search?q=/\\escape search field terminator and escape character(/ or ? and \) /\Vhttp:\/\/vimdoc.net\/search?q=\/\\\\ /\V<C-r>=escape(@u, getcmdtype().'\')

13. Search

search command :set wrapscan! search the document without wrapping aroundoptions for repeating a search n Jump to next match, preserving direction and offset N Jump to previous match, preserving direction and offset /<CR> Jump forward to next match of same pattern ?<CR> Jump backward to previous match of same pattern gn select current or next search match and enable character-wise Visual mode gN select current or previous search match and enable character-wise Visual mode recall historical searches <Up>----------------------------------------------highlight search matches :set hlsearch all matches to be highlighted current document as well as in any other open split windows :set nohlsearch disable hlsearch entirely :nohlsearch mute search highlighting temporarily until the next time you execute a new or repeat search nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>----------------------------------------------improve search workflow :set incsearch enable incremental search <C-r><C-w> autocompletes search field using remainder of the word (if pattern prefix with /v it will autocompletes the entire word under the cursor)----------------------------------------------Aim to learn a new programming lang each year. Which lang did you pick up last year? Which langs would you like to learn?using search offset /lang/e<CR> //e<CR>----------------------------------------------class XhtmlDocument < XmlDocument; end class XhtmlTag < XmlTag; endoperate on search match /\vX(ht)?ml\C<CR> gUgn n.n.----------------------------------------------This string contains a 'quoted' word. This string contains 'two' quoted 'words.' This 'string doesn't make things easy.'Create Complex Patterns by Iterating upon Search History q/ summon the search history command window /\v'.+' /\v'[^']+' /\v'([^']|'\w)+' /\v'(([^']|'\w)+)' :%s//"\1"/g :%s/\v'(([^']|'\w)+)'/"\1"/g----------------------------------------------var buttons = viewport.buttons; viewport.buttons.previous.show(); viewport.buttons.next.show(); viewport.buttons.index.hide();Count the Matches for the Current Pattern /\<buttons\> :%s///gn :vimgrep //g % :cnext :cprev----------------------------------------------Search for the Current Visual Selectionxnoremap * :<C-u>call <SID>VSetSearch('/')<CR>/<C-R>=@/<CR><CR> xnoremap # :<C-u>call <SID>VSetSearch('?')<CR>?<C-R>=@/<CR><CR> function! s:VSetSearch(cmdtype)let temp = @snorm! gv"sylet @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g')let @s = temp endfunctionhttps://github.com/nelstrom/vim-visual-star-search

14. Substitution

substitute command :[range]s[ubstitute]/{pattern}/{string}/[flags]substitute command flags g change all matches within a line rather than just changing the first one c gives us the opportunity to confirm or reject each change n suppresses the usual substitute behavior, causing the command to report the number of occurrences e silence errors if the pattern has no matches in the current file & reuse the same flags from the previous substitute commandSpecial Characters for the Replacement String \r Insert a carriage return \t Insert a tab character \\ Insert a single backslash \1 Insert the first submatch \2 Insert the second submatch (and so on, up to \9) \0 Insert the entire matched pattern & Insert the entire matched pattern ~ Use {string} from the previous invocation of :substitute \={Vim script} Evaluate {Vim script} expression; use result as replacement {string}----------------------------------------------When the going gets tough, the tough get going. If you are going through hell, keep going.Find and Replace Every Match in a File :%s/going/rolling/g----------------------------------------------...We're waiting for content before the site can go live... ...If you are content with this, let's go ahead with it... ...We'll launch as soon as we have the content...Eyeball Each Substitution :%s/content/copy/gcVim’s Substitute Confirmation Mode y Substitute this match n Skip this match q Quit substituting l "last"—Substitute this match, then quit a "all"—Substitute this and any remaining matches <C-e> Scroll the screen up one line <C-y> Scroll the screen down one line----------------------------------------------paste the contents of the last search register :%s/<C-r>//"\1"/g----------------------------------------------use the content of register in replacement string :%s//<C-r>0/g :%s//\=@0/g----------------------------------------------Repeat a Line-Wise Substitution Across the Entire File :s/target/replacement/g :%s//~/& g&mixin = {applyName: function(config) {return Factory(config, this.getName());}, }replay the last substitue command :&&making & trigger :&& command nnoremap & :&&<CR> xnoremap & :&&<CR>----------------------------------------------last name,first name,email neil,drew,drew@vimcasts.org doe,john,john@example.comreference submatch in replacement string /\v^([^,]*),([^,]*),([^,]*)$ :%s//\3,\2,\1----------------------------------------------<h2>Heading number 1</h2> <h3>Number 2 heading</h3> <h4>Another heading</h4>perform arithmetic on replacement string /\v\<\/?h\zs\d :%s//\=submatch(0)-1/g----------------------------------------------The dog bit the man.Swap Two or More Words :let swapper={"dog":"man","man":"dog"} :echo swapper["dog"] :echo swapper["man"] /\v(<man>|<dog>) :%s//\={"dog":"man","man":"dog"}[submatch(1)]/ghttps://github.com/tpope/vim-abolish :%S/{man,dog}/{dog,man}/g----------------------------------------------Find and replace in current buffer /Pragmatic\ze Vim :%s//Practical/gFind and Replace Across Multiple Files /Pragmatic\ze Vim :vimgrep // **/*.txt :set hidden :cfdo %s//Practical/gc :cfdo update

15. Global Commands

global command(run an Ex command on each line that matches a particular pattern, default range is entire file %, default cmd is :print) :[range] global[!] /{pattern}/ [cmd]----------------------------------------------<ol><li><a href="/episodes/show-invisibles/">Show invisibles</a></li><li><a href="/episodes/tabs-and-spaces/">Tabs and Spaces</a></li><li><a href="/episodes/whitespace-preferences-and-filetypes/">Whitespace preferences and filetypes</a></li> </ol>delete lines containing a pattern /\v\<\/?\w+> :g//dkeep lines containing a pattern :v/href/d----------------------------------------------Markdown.dialects.Gruber = {lists: function() {// TODO: Cache this regexp for certain depths.function regex_for_depth(depth) { /* implementation */ }},"`": function inlineCode( text ) {var m = text.match( /(`+)(([\s\S]*?)\1)/ );if ( m && m[2] )return [ m[1].length + m[2].length ];else {// TODO: No matching end code found - warn!return [ 1, "`" ];}} }collect all lines that match a pattern in a register qaq :g/TODO/yank A :g/TODO/t$----------------------------------------------html {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline; } body {line-height: 1.5;color: black;background: white; }Alphabetize the Properties of Each Rule in a CSS File :g/{/ .+1,/}/-1 sortgeneralized form of global command :g/{start}/ .,{finish} [cmd]

16. Index and Navigate Source Code with ctags

Exuberant Ctags yum ctags ctags *.rb----------------------------------------------specify where Vim should look to find a tags file :set tags? Generate the tags File :!ctags -R :nnoremap <f5> :!ctags -R<CR>Automatically Execute ctags Each Time a File is Saved :autocmd BufWritePost * call system("ctags -R")Automatically Execute ctags with Version Control Hooks http://tbaggery.com/2011/08/08/effortless-ctags-with-git.html----------------------------------------------tag command <C-]> jump from the keyword under the cursor to the definition <C-t> jump backword for tag jump history g<C-]> if keyword has multiple matches prompt a list of tag match :tselect retrospectively pull up the menu of the tag match list :tnext :tprev :tfirst :tlast<C-]> Jump to the first tag that matches the word under the cursor g<C-]> Prompt user to select from multiple matches for the word under the cursor. If only one match exists, jump to it without prompting. :tag {keyword} Jump to the first tag that matches {keyword}, Keyword could be regualr expression :tjump {keyword} Prompt user to select from multiple matches for {keyword}. If only one match exists, jump to it without prompting. Keyword could be regualr expression :pop or <C-t> Reverse through tag history :tag Advance through tag history :tselect Prompt user to choose an item from the tag match list :tnext Jump to next matching tag :tprev Jump to previous matching tag :tfirst Jump to first matching tag :tlast Jump to last matching tag

17. Compile Code and Navigate Errors with the Quickfix List

compile the project inside vim :make :make!----------------------------------------------browse the quickfix list :cnext Jump to next item, can be prefixed with a count :cprev Jump to previous item, can be prefixed with a count :cfirst Jump to first item :clast Jump to last item :cnfile Jump to first item in next file :cpfile Jump to last item in previous file :cc N Jump to nth item :copen Open the quickfix window :cclose Close the quickfix window :cdo {cmd} Execute {cmd} on each line listed in the quickfix list :cfdo {cmd} Execute {cmd} once for each file listed in the quickfix listcommands populates quickfix list :make :grep :vimgrepcommands populates location list :lmake :lgrep :lvimgrepbrowse the location list same as quickfix list c replaced with l----------------------------------------------recall results from a previous quickfix list :colder recall an older version of quickfix list, can be prefixed with a count :cnewer revert from an old quickfix list back to a newer one, can be prefixed with a count----------------------------------------------var i; for (i=1; i <= 100; i++) {if(i % 15 == 0) {console.log('Fizzbuzz');} else if(i % 5 == 0) {console.log('Buzz');} else if(i % 3 == 0) {console.log('Fizz');} else {console.log(i);} };Customize the External Compiler npm install nodelint -g :setlocal makeprg=NODE_DISABLE_COLORS=1\ nodelint\ % :setlocal errorformat=%A%f\,\ line\ %l\,\ character\ %c:%m,%Z%.%#,%-G%.%# https://github.com/bigfish/vim-nodelint :compiler nodelint

18. Search Project-Wide with grep, vimgrep, and Others

call grep without leaving vim :grep -i Waldo * ----------------------------------------------Customize the grep grepprg="grep -n $* /dev/null" grepformat="%f:%l:%m,%f:%l%m,%f %l%m"make grep call ack yum install ack-grep ln -s /usr/bin/ack-grep /usr/local/bin/ack :set grepprg=ack\ --nogroup\ --column\ $* :set grepformat=%f:%l:%c:%malternative grep plugin https://github.com/tpope/vim-fugitive https://github.com/mileszs/ack.vim----------------------------------------------grep with vim's internal search engine :vim[grep][!] /{pattern}/[g][j] {file} ... :vimgrep /going/ clock.txt tough.txt where.txt :vimgrep /going/g clock.txt tough.txt where.txtvimgrep each file in the argument list :args *.txt :vim /going/g ##vimgrep reuse last search pattern /[Dd]on't :vim //g *.txtlooks inside each of the files in the argument list for the current search pattern :vim //g ##

19. Dial X for Autocompletion

autocompletion and case sensitivity if 'ignorecase' option is enabled autocompletion word list will add more candidates enabling the 'infercase' option to improve candidatescommands trigger autocompletion <C-n>/<C-p> Generic keywords(buffer list + included files + tag files) <C-x><C-l> Whole line completion(same as generic keywords source) <C-x><C-n> Current buffer keywords <C-x><C-i> Included file keywords <C-x><C-]> tags file keywords <C-x><C-k> Dictionary lookup <C-x><C-f> Filename completion <C-x><C-o> Omni-completion----------------------------------------------commands interacting with autocompletion suggestions pop-up menu <C-n> Use the next match <C-p> Use the previous match <Down> Select the next match(text in document is left unchanged) <Up> Select the previous match(text in document is left unchanged) <C-y> Accept the currently selected match (yes) <C-e> Revert to the originally typed text (exit from autocompletion) <C-h>(and <BS>) Delete one character from current match <C-l> Add one character from current match {char} Stop completion and insert {char}Refine the Word List as You Type <C-n><C-p>----------------------------------------------inspect buffer list :ls!Customizing the Generic Autocompletion :set complete=.,w,b,u,t,i :set complete+=k (enable completion words from spelling dictionary) :set complete-=i (disable completion words from included files)----------------------------------------------autocomplete words from the dictionary :set spell :h 'dictionary'----------------------------------------------.top {background-color: #ef66ef; } .bottom {----------------------------------------------Here's the "hyperlink" for the Vim tutor: <vimref href="http://vimhelp.appspot.com/usr_01.txt.html#tutor">tutor</vimref>. For more information on autocompletion see: <vimrautocomplete sequences of words <C-x><C-p>autocomplete sequences of lines <C-x><C-l>----------------------------------------------<!DOCTYPE html> <html><head><title>Practical Vim - the app</title><script src="" type="text/javascript"></script></head><body></body> </html>Autocomplete Filenames :pwd inspect current working directory :cd {path} change working directory :cd- revert back to previous working directory----------------------------------------------h1 { ba

20. Find and Fix Typos with Vim’s Spell Checker

Yoru mum has a moustache.Spell Check :set spell enabling the built-in spell checker, highlight misspelled wordsspell checker commands ]s Jump to next spelling error [s Jump to previous spelling error z= Suggest corrections for current word(can be prefixed with a count) zg Add current word to spell file(so it doesn't flagged, can be prefixed with a count) zw Remove current word from spell file zug Revert zg or zw command for current word----------------------------------------------Use Alternate Spelling Dictionaries :set spell :set spelllang=en_us (always local to buffer, default value is en)http://ftp.vim.org/vim/runtime/spell/----------------------------------------------setlocal spelllang=en_us setlocal spellfile=~/.vim/spell/en.utf-8.add setlocal spellfile+=~/books/practical_vim/jargon.utf-8.addAdd Words to the Spell File 2zg 1zg----------------------------------------------Fix Spelling Errors in Insert Mode <C-x>s scans backward from the cursor position, stopping when it finds a misspelled word, then builds a word list from suggested corrections and presents them in an autocomplete pop-up menu.

chang vim’s settings on the fly

change settings :set ignorecase :set noignorecase :set ignorecase! :set ignorecase? :set ignorecase& :set ts=2 sts=2 sw=2 etchange settings locally :setlocal tabstop=4 :bufdo setlocal tabstop=4 :windo setlocal number

總結

以上是生活随笔為你收集整理的practical vim2 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

米奇四色影视 | 日韩免费视频一区二区 | 婷婷九月激情 | 欧美福利久久 | 超级碰碰免费视频 | 在线观看亚洲a | 日本久久综合网 | 操处女逼 | 亚洲国产精品免费 | 国产精品一区二区视频 | 亚洲欧洲国产精品 | 在线观看视频一区二区三区 | 91综合久久一区二区 | 视频在线观看亚洲 | 免费一级片视频 | 91麻豆看国产在线紧急地址 | 日韩系列在线 | av在线免费在线 | 亚洲一级免费电影 | 亚洲精品乱码久久久久久蜜桃91 | 国产亚洲精品无 | 在线观看中文字幕一区二区 | wwwwww国产| 91精品一区二区三区久久久久久 | 色综合久久88色综合天天 | 国产在线播放一区二区三区 | 日韩一区二区三区免费视频 | 九九久久国产 | 99久久精品国产亚洲 | 欧美性黑人 | 麻豆免费观看视频 | 久色小说 | 在线观看免费视频 | 韩国中文三级 | 在线亚洲高清视频 | 18久久久久 | 中文字幕人成一区 | 天天做日日做天天爽视频免费 | avhd高清在线谜片 | 在线精品观看 | 国产精品igao视频网入口 | 日韩高清毛片 | 96av在线视频 | 成人欧美在线 | 激情丁香在线 | 日韩成人av在线 | 久久影视一区二区 | 亚洲成人中文在线 | 国产精品12345| 婷婷九月激情 | 91精品国产99久久久久久红楼 | 国产视频日本 | 久草免费新视频 | 二区三区在线 | 超碰在线日本 | 91在线看免费 | 伊人久久国产 | 国产一级不卡毛片 | 日韩av看片 | 天天射综合网视频 | 日韩视频在线观看视频 | 一区二区三区电影在线播 | 高潮久久久久久久久 | 91亚洲国产 | 不卡视频在线看 | 国产自在线观看 | 91夜夜夜 | 日日天天av | 精品久久久久久国产偷窥 | 国产69精品久久久久久 | 久草手机视频 | 999视频精品 | .国产精品成人自产拍在线观看6 | 久久国产精品久久精品 | 亚洲欧美偷拍另类 | 在线国产一区 | 日日日网 | 国产区精品在线观看 | 免费精品在线视频 | 国产成人三级在线播放 | 91精品国产九九九久久久亚洲 | 亚洲在线成人精品 | 黄色大片视频网站 | 天天操天天吃 | 日本三级久久 | 91黄视频在线 | 在线成人av | 久久美女免费视频 | 国产精品一区二区久久精品 | 国产精品午夜免费福利视频 | 日韩精品一区二区三区不卡 | 亚洲免费在线 | av免费在线网站 | 久久久国产在线视频 | 五月天综合网站 | 免费观看xxxx9999片 | 国产一区二区三区免费在线观看 | 天天操天天射天天添 | 久久成| 日本精品视频在线观看 | 狠狠地操 | 成人va视频| 精品一区二区av | 香蕉久草| 在线观看中文字幕2021 | 美女免费网站 | 狠狠色狠狠综合久久 | 欧美日韩精品免费观看 | 免费观看午夜视频 | 深爱激情亚洲 | 国产成人精品国内自产拍免费看 | 国产精品久久伊人 | 黄色www免费 | 成人免费影院 | 三级动图| 91精品久久久久久 | 国产精品久久久久久妇 | 天天色天天骑天天射 | 狠狠狠狠狠狠天天爱 | 激情五月婷婷综合网 | 久久久国产一区二区 | 久久一级电影 | 狠狠操狠狠操 | 欧美日韩国产综合网 | www蜜桃视频 | 国产999精品久久久久久绿帽 | 狠狠操在线 | 亚洲一区二区精品在线 | 99免费在线| 久久精品韩国 | 色婷婷电影网 | 欧美成人黄色片 | 天天操天天摸天天干 | 国产成人精品一区二区 | 久久av影视| www.天天成人国产电影 | 国产一区国产二区在线观看 | 欧美激情视频免费看 | 亚洲精品成人免费 | 亚洲精品88欧美一区二区 | 99久久精品国产毛片 | 国产小视频在线免费观看视频 | 热久久免费国产视频 | 国产香蕉97碰碰碰视频在线观看 | 久久久久久久久久久久国产精品 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 中文在线a√在线 | 在线观看免费av网站 | 国产麻豆成人传媒免费观看 | 久久精品国产免费看久久精品 | 日韩午夜视频在线观看 | 日韩精品短视频 | 亚洲国产视频在线 | 天天做天天射 | 日韩高清成人在线 | 在线观影网站 | 日韩一区二区三区高清在线观看 | 天天爱天天操 | 97在线观看免费高清 | 少妇性bbb搡bbb爽爽爽欧美 | 国产精品久久久久久久久久ktv | 永久免费视频国产 | 99re久久资源最新地址 | av高清网站在线观看 | 91精品啪在线观看国产81旧版 | 国产剧情一区 | 91在线小视频 | 国产精品123 | 一级片免费观看视频 | 97在线视频观看 | 在线小视频| 麻豆精品在线视频 | 综合色站导航 | 91在线你懂的 | 国产在线久草 | 成人在线观看av | www.色五月 | 不卡视频一区二区三区 | 九九热在线观看 | 视频1区2区 | av色网站| 最近免费观看的电影完整版 | 国产精品va在线观看入 | 激情六月婷婷久久 | www.国产在线 | 亚洲视频在线免费看 | 国产精品99久久99久久久二8 | 丁香婷婷色综合亚洲电影 | 在线导航av | 成人免费视频网址 | 六月丁香久久 | 精品福利网 | 国产亚洲va综合人人澡精品 | 久久婷婷国产 | 国产一区二区在线影院 | 欧美网站黄色 | 国产精品99久久99久久久二8 | 亚洲视频每日更新 | 开心激情久久 | 久久精品专区 | 99热9| 91久久精品日日躁夜夜躁国产 | 91在线资源| 久久在线 | 欧美一区二区三区免费看 | 色激情在线 | 97干com| 久久精彩免费视频 | 欧美一区二区视频97 | 免费观看久久久 | 狠狠躁夜夜躁人人爽视频 | 最近日本中文字幕a | 果冻av在线| 成人网444ppp | 亚洲v欧美v国产v在线观看 | 国产91在线播放 | 国产打女人屁股调教97 | 日韩欧美在线免费观看 | 精品麻豆| 国产1区2区 | 99久久99久久精品国产片果冰 | 久要激情网 | 国产精品久久久久久久久久直播 | www激情网 | 色先锋av资源中文字幕 | 狠狠操狠狠干天天操 | 97伊人网 | 国产一区二区在线播放 | 亚洲精品视频大全 | 中文字幕免费在线看 | 日韩免费一区二区三区 | 国产中文字幕一区二区 | 欧美电影在线观看 | 中文字幕在线观看第二页 | 国产女人18毛片水真多18精品 | 亚洲视频2| 黄色三级网站在线观看 | 欧美精品久久久久久久亚洲调教 | 黄色午夜 | 91日韩在线视频 | 成人免费观看完整版电影 | 久久99国产精品视频 | 亚洲精品中文在线资源 | 不卡av电影在线观看 | 国产专区一 | 亚洲一区二区三区在线看 | 人人射av | 激情久久综合网 | 日韩激情视频在线观看 | 日本成人中文字幕在线观看 | 在线99热 | 黄色在线观看免费网站 | 欧美日韩视频免费看 | 日本精品久久久久中文字幕 | 最新中文字幕在线播放 | 国产中文字幕大全 | 久久精品a| 亚洲一区免费在线 | 好看av在线 | 婷婷激情综合五月天 | a午夜在线 | 性色av一区二区 | 国产一区福利在线 | 久久免费大片 | 免费观看全黄做爰大片国产 | 99视频99 | 亚洲乱码在线观看 | 国产日韩欧美自拍 | 国产精品视频在线看 | 成人免费视频播放 | 99福利影院 | 天天爱天天色 | 国产精品久久久久一区二区三区共 | 91亚洲精品久久久蜜桃网站 | 成人av在线网址 | 超碰成人免费电影 | 日韩在线视频一区 | avwww在线| 青青河边草免费直播 | 亚洲婷婷丁香 | 日韩va欧美va亚洲va久久 | 久久三级视频 | 久久9999久久免费精品国产 | 国产精品99久久久久人中文网介绍 | 99色视频| 激情久久综合网 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产码电影 | 亚洲一级片在线看 | 天天艹天天爽 | 9在线观看免费高清完整版在线观看明 | 亚州精品天堂中文字幕 | 亚洲国产影院av久久久久 | 久草国产在线观看 | 国产专区第一页 | 国产精品久久亚洲 | 精品久久久国产 | 国产美女精品视频免费观看 | 69av久久 | 成人久久免费 | 久久夜色网 | 精品亚洲午夜久久久久91 | 天天躁日日躁狠狠 | 97超级碰碰碰视频在线观看 | 亚洲免费永久精品国产 | 99热这里有精品 | 国产精品乱码久久 | 久久综合狠狠综合久久狠狠色综合 | 人人看看人人 | 久久99在线观看 | 成人午夜电影在线播放 | 在线观看视频色 | 五月婷综合 | 国产尤物在线视频 | 在线天堂中文在线资源网 | 国产69久久久 | 精品国产成人av在线免 | 97超碰资源 | 国产成人久久久久 | www.色的| 中文字幕av免费在线观看 | 97人人爽人人 | 国产一区二区在线播放视频 | 日韩精品视频一二三 | 亚洲第一伊人 | 黄色激情网址 | 天天综合久久综合 | 国产成人高清 | 天天爱天天 | 最新av网址在线 | 天天操夜夜爱 | 玖玖玖精品 | 国产白浆视频 | 亚洲第一香蕉视频 | 久久精品国产一区二区电影 | 超碰人人草人人 | 婷婷成人亚洲综合国产xv88 | 国产精品免费久久久久久久久久中文 | 91手机视频在线 | 香蕉免费 | 九色91福利 | 日韩专区在线观看 | 精品一区二区三区电影 | 成年人视频在线免费 | 天天做日日爱夜夜爽 | 国产日韩精品一区二区三区在线 | 国产精品一区二 | 久久久久网址 | 超碰免费97 | 免费看片成人 | 国产精品激情偷乱一区二区∴ | 在线观看第一页 | 亚洲精品激情 | 日韩精品一区二区三区视频播放 | 国产小视频你懂的在线 | 特级毛片网站 | 天天干夜夜夜操天 | 丁香国产视频 | 精品在线播放视频 | 免费黄色av电影 | 亚洲精品视频二区 | www.天天草 | 在线观看亚洲精品 | 免费精品国产 | 黄色网在线免费观看 | 欧美精品久久久久性色 | 日韩资源在线播放 | 日韩午夜一级片 | 国产香蕉视频在线播放 | 免费久久99精品国产 | 在线免费观看成人 | 免费观看久久久 | 日韩在线免费视频 | 91.精品高清在线观看 | 亚洲资源在线 | 9999毛片| 成人a v视频 | 欧美精品一级视频 | 国产小视频91 | 在线观看中文字幕亚洲 | 中文字幕在线观看av | 一区二区视频在线看 | av字幕在线| 久草视频免费在线播放 | 黄视频网站大全 | 丁香五月网久久综合 | av不卡在线看| 色香蕉网 | 日韩成人精品一区二区三区 | 国产福利一区二区三区视频 | 日韩国产精品久久久久久亚洲 | av高清免费 | 亚洲情感电影大片 | 国产在线视频一区二区 | 亚洲作爱 | 狠狠的操你 | 美女性爽视频国产免费app | 成年人在线看视频 | 天天爱天天操天天爽 | 免费看的国产视频网站 | 国产视频中文字幕在线观看 | 白丝av免费观看 | 国产精品免费麻豆入口 | 日日夜夜天天人人 | 国产黄色在线看 | 日韩精品一区不卡 | 中文字幕一区二区三区四区久久 | 久久国产精品99久久久久久丝袜 | 久久成人国产精品 | www黄免费| 天天干,天天干 | 国产精品99久久久久久宅男 | 免费看的黄网站软件 | 福利视频网址 | 精品在线二区 | 国产精品美女在线 | 中文字幕一二三区 | 国产色视频一区 | 麻豆成人在线观看 | 亚洲精品视频免费在线观看 | 国产精品第52页 | 午夜国产福利在线 | 91视频久久久久 | 亚洲影视九九影院在线观看 | 国产高清视频色在线www | 精品美女视频 | 免费色视频网址 | 国产精品女同一区二区三区久久夜 | 久久久国产毛片 | 亚洲精品理论 | 日韩视频a| 欧美夫妻性生活电影 | 在线观看av黄色 | 六月丁香综合 | 欧美性护士 | 中文字幕av在线免费 | 亚洲无在线 | 婷婷久久久久 | 一区二区三区四区在线免费观看 | 久久亚洲在线 | 久久午夜网 | 久久国产精品视频免费看 | 欧美激情亚洲综合 | 24小时日本在线www免费的 | 色亚洲激情 | 欧美日在线 | 韩国在线一区 | 看毛片网站 | 国产 日韩 在线 亚洲 字幕 中文 | 国产91对白在线播 | 国产打女人屁股调教97 | 国内外成人免费在线视频 | 国产午夜精品一区二区三区四区 | 最近最新mv字幕免费观看 | 97国产一区二区 | 国产日韩视频在线 | 久久久久久97三级 | 色中文字幕在线观看 | 久草在线久草在线2 | av观看久久久 | 日韩午夜在线 | 热久久在线视频 | 黄色大全视频 | 国产精品久久久久久久妇 | 99热精品视| 成人a视频片观看免费 | 久久久精品小视频 | 国产精品人人做人人爽人人添 | 麻豆视频网址 | 免费久久99精品国产 | 在线韩国电影免费观影完整版 | 国产成人免费av电影 | 四虎影视8848aamm| www黄色com | 亚洲精品动漫成人3d无尽在线 | 成人理论电影 | 久久久久久草 | a级成人毛片 | 三级黄色大片在线观看 | 成人资源在线 | 激情五月在线视频 | 一区二区三区播放 | 99久精品视频 | 高潮久久久久久久久 | 欧美色精品天天在线观看视频 | 五月色丁香 | 亚洲精品成人av在线 | 六月婷婷网| 黄色av网站在线免费观看 | 色国产在线 | 夜夜躁天天躁很躁波 | 五月婷婷在线视频 | 中文字幕在线中文 | 懂色av一区二区在线播放 | 久久国产亚洲 | 美女在线观看av | 婷婷5月激情5月 | 国产美女搞久久 | 日韩成人在线一区二区 | 亚洲 欧美日韩 国产 中文 | 久久综合狠狠综合久久激情 | 久久精品视频网 | 久久久久女人精品毛片 | 人人玩人人添人人澡97 | 亚洲精品理论 | 欧美99热 | 黄网站免费看 | 成年人免费看片网站 | 91精品久久久久久久久久入口 | 免费一级黄色 | 成年人在线免费看视频 | 美女啪啪图片 | 香蕉视频最新网址 | 国产欧美在线一区 | 亚洲高清在线观看视频 | 在线 你懂 | 色一级片 | 99久久99热这里只有精品 | а中文在线天堂 | 制服丝袜一区二区 | 久久精品国产一区二区电影 | 精品国产一区二区三区不卡 | 日本高清中文字幕有码在线 | 国产不卡高清 | 亚洲国产欧美一区二区三区丁香婷 | 精品国产一区二区三区不卡 | 免费看亚洲毛片 | 日韩精品一区二区三区外面 | 久草国产在线观看 | 成人一级电影在线观看 | www.久久久久 | 日韩精品一区二区久久 | 免费精品人在线二线三线 | 天天干视频在线 | 久久久国产精品网站 | 久久草网站 | av解说在线 | 久久久久久毛片 | 精品国产伦一区二区三区观看说明 | 在线观看色视频 | 日韩精品一区二区三区免费观看 | 欧美在线观看视频免费 | www.夜色.com | 日韩欧美久久 | 国产精品第2页 | 国产精品综合av一区二区国产馆 | 国产亚洲精品久久网站 | 婷婷激情综合网 | 天天干夜夜爱 | 免费福利片 | 国产精品正在播放 | 激情婷婷六月 | www狠狠| 99re8这里有精品热视频免费 | 亚洲片在线资源 | 久久亚洲视频 | 久久综合五月天婷婷伊人 | 欧美日韩国产页 | 久草剧场 | 午夜在线免费观看 | 久久精品婷婷 | 国产一区二区精品久久91 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久不见久久见免费影院 | 日韩视频免费 | 99精品视频在线播放免费 | 国产精品美女www爽爽爽视频 | 国产vs久久 | 免费久久99精品国产婷婷六月 | 国产成视频在线观看 | 欧美日韩天堂 | 免费看的黄色的网站 | 高潮久久久久久 | 精品国产人成亚洲区 | 久久99久久精品国产 | 国产精品18videosex性欧美 | 激情综合六月 | 91成人在线视频观看 | 亚洲一区av | 狠狠色狠狠色终合网 | 日韩在线视频一区二区三区 | 91精品在线麻豆 | 国产综合精品一区二区三区 | 免费福利在线观看 | 国产高清在线观看 | 91高清在线 | 国产婷婷一区二区 | 亚洲影院国产 | 成人精品在线 | 日韩在线高清视频 | 日日激情 | 亚洲久草在线视频 | 国产精品精品国产色婷婷 | 免费在线观看不卡av | 久久精品欧美一区二区三区麻豆 | 狂野欧美激情性xxxx欧美 | av成人动漫在线观看 | 日韩精品视频在线观看免费 | 综合久久久久久久久 | 欧美久久久久久久久久久 | 99精品在线免费观看 | 蜜桃视频成人在线观看 | 久久99久国产精品黄毛片入口 | 国产久视频 | 永久免费视频国产 | 欧美激情综合网 | 国产精品久久久久婷婷二区次 | 国产乱对白刺激视频不卡 | 国产一级片免费观看 | 婷婷激情五月 | 久久精品国产成人 | 丁香九月婷婷综合 | 国产一级片网站 | 国产精品第7页 | 91av蜜桃| 日日夜夜天天综合 | 精品在线视频播放 | 在线看免费 | 一区二区三区在线观看免费视频 | 国产a国产 | 久草在线高清 | av免费在线免费观看 | 成人网在线免费视频 | 99热精品国产一区二区在线观看 | 久久天堂网站 | 日韩电影黄色 | 欧美a在线免费观看 | 日本中文字幕影院 | 最新国产精品拍自在线播放 | 91高清视频免费 | 一区三区视频 | av在线电影免费观看 | 国产精品综合久久久久久 | 亚洲闷骚少妇在线观看网站 | 一区二区中文字幕在线播放 | 色综合久久88色综合天天 | 91漂亮少妇露脸在线播放 | 欧美一级片免费在线观看 | 午夜私人影院 | 欧美一级日韩三级 | 麻豆91在线观看 | 久久视频热 | 色综合 久久精品 | 波多野结衣最新 | 一区二区不卡视频在线观看 | 激情综合色播五月 | 欧美一区二区三区免费观看 | 人人玩人人添人人澡97 | 天天干天天操av | 成年人在线播放视频 | 天天操天天射天天插 | 99视频在线免费播放 | 免费在线观看国产黄 | 在线观看爱爱视频 | 香蕉视频免费在线播放 | 国产一级在线观看 | 福利一区在线视频 | 亚洲经典中文字幕 | 在线观看亚洲国产 | 国产精品淫片 | 狠狠色综合欧美激情 | 欧美久久久久久久久中文字幕 | 日韩a在线播放 | 国产精品都在这里 | 在线免费观看一区二区三区 | 美女亚洲精品 | 成人a在线观看 | 日韩欧美在线免费观看 | 日韩电影中文,亚洲精品乱码 | 精品96久久久久久中文字幕无 | 日韩精品免费在线观看 | av在线免费播放 | 综合久久久久久久 | 六月丁香在线视频 | 日韩a在线观看 | 99精品在线免费在线观看 | 成人av影院在线观看 | 视频直播国产精品 | 国产视频亚洲精品 | 欧美久久精品 | 亚洲电影成人 | 亚洲丝袜一区二区 | 久久激情五月丁香伊人 | 欧美久久电影 | 日本超碰在线 | 日韩1页| 日韩久久久久久久久久久久 | 日韩视频欧美视频 | 久久社区视频 | 亚洲一二区视频 | 久久国产一区二区 | 欧美日韩国产精品一区二区亚洲 | 久久爽久久爽久久av东京爽 | 337p日本欧洲亚洲大胆裸体艺术 | 91天天视频 | 在线看成人av | 一区二区三区在线免费 | 91尤物在线播放 | 永久免费在线 | 一区二区三区免费 | 99精品在线视频观看 | 91人人射 | 激情婷婷网 | 玖玖在线播放 | 日日草视频 | 五月天久久综合网 | 婷婷伊人综合亚洲综合网 | 久久精品视频在线 | 日韩videos | 国产精品黄色影片导航在线观看 | 人人澡超碰碰 | 激情五月视频 | 日韩网站免费观看 | 欧美一级视频免费 | 国产精品久久久久久久久久ktv | 五月天婷婷在线观看视频 | 国产操在线 | av色综合网 | 亚洲精品国产精品乱码在线观看 | 国产伦精品一区二区三区四区视频 | 在线观看国产区 | 国产 色| 日日草夜夜操 | 黄色成人免费电影 | 欧美一级电影 | 亚欧洲精品视频在线观看 | 色欧美88888久久久久久影院 | 日韩高清精品免费观看 | 91精品啪在线观看国产线免费 | 国产精品va视频 | 欧美永久视频 | 精品国产免费人成在线观看 | 三级视频国产 | 97超碰人人模人人人爽人人爱 | 91黄在线看| 中文字幕精品一区二区精品 | 欧美国产在线看 | 亚洲有 在线 | 天天色天天色 | www狠狠 | 亚洲天堂精品 | 麻豆av电影 | 精品特级毛片 | 丁香资源影视免费观看 | 国产色黄网站 | 日韩欧美一区视频 | 国产一线二线三线性视频 | 中文字幕在线观看免费观看 | 精品国产综合区久久久久久 | 人人网av | 免费看片黄色 | 久久成人精品电影 | 日韩欧美精品在线 | 在线观看精品一区 | 天天爽天天做 | 日韩免费视频在线观看 | 免费高清在线观看成人 | 超碰97久久| 亚洲五月婷 | 狠狠狠狠狠狠 | 激情婷婷 | 国产精品毛片网 | 国产美女精彩久久 | 欧美高清成人 | 久久综合免费 | 99久久精品免费看国产免费软件 | 992tv在线观看 | 日韩在线观看 | 91麻豆精品国产91久久久久久 | 国产精品一区二区在线播放 | 久草精品视频在线看网站免费 | 成人欧美一区二区三区在线观看 | 欧美日韩高清在线观看 | 亚洲精品乱码久久久久久高潮 | 日日干天天干 | 超级碰碰碰视频 | 亚洲小视频在线观看 | 在线精品观看 | 天天色天天综合网 | 天天干天天摸天天操 | 色大片免费看 | 亚洲二级片 | 国产精品v a免费视频 | 麻豆精品在线视频 | 久久人人爽人人 | 免费在线播放 | 涩涩爱夜夜爱 | 国产成人黄色 | 国产精品99久久久久的智能播放 | 欧洲在线免费视频 | 成人国产精品久久久 | 黄色高清视频在线观看 | 一本一本久久a久久精品综合妖精 | 97在线看片 | 国产aa免费视频 | 91麻豆精品91久久久久同性 | 日韩网站在线观看 | 国产精品一区二区在线免费观看 | 最新av网址在线观看 | 成人免费91| 亚洲一本视频 | 黄色成人小视频 | 亚洲精品免费在线观看 | 婷婷中文在线 | 国产三级国产精品国产专区50 | 日韩av在线资源 | 99精品国产视频 | 又爽又黄在线观看 | 久久久免费观看 | 在线观看一级 | 亚洲精品大片www | 亚洲精品乱码白浆高清久久久久久 | 久久视频在线观看中文字幕 | 日本久久综合网 | 免费观看一区二区 | 热99在线视频 | 亚洲一级久久 | 午夜在线观看影院 | 久久久久一区二区三区四区 | 免费av小说 | 天天爽夜夜爽精品视频婷婷 | 国产午夜三级 | 在线电影 你懂得 | 国产精品久久久免费看 | 色婷婷免费视频 | 久久a v电影 | 国产手机视频精品 | 激情欧美丁香 | 国产日韩欧美在线一区 | 久久av在线播放 | 日韩欧美一区二区在线播放 | 欧美日韩精品影院 | 天天色中文 | 亚洲精品免费在线观看 | 中文字幕a∨在线乱码免费看 | 国产午夜小视频 | 日韩天天干| www在线观看视频 | 蜜桃av观看 | 欧美性生活免费看 | 国内精品久久久久久久影视简单 | 欧美福利网址 | 18网站在线观看 | 国产精品国产三级国产aⅴ9色 | 国产精品成人在线观看 | 亚洲电影影音先锋 | 99精品久久久久 | 亚洲欧美国产视频 | 麻豆系列在线观看 | 中文字幕一区二区三区在线视频 | 狠狠亚洲 | 国产3p视频 | 91免费日韩 | 免费看精品久久片 | www.天天色 | 在线免费av电影 | 992tv成人免费看片 | 亚洲成人黄色在线观看 | 91视频在线自拍 | 91视频首页 | 手机成人在线电影 | 久久婷婷视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 91精品在线观看入口 | 人人干网站 | 久久久久99精品成人片三人毛片 | 国产在线一区观看 | 九热精品 | 男女全黄一级一级高潮免费看 | 99re久久精品国产 | 97电影网手机版 | 91视频在线观看免费 | www.com黄色| 日p视频在线观看 | 日本久久成人中文字幕电影 | 亚洲成人av在线 | 波多野结衣小视频 | 国产精品久久久久久久久久尿 | 国产精品精品国产 | 久久国产精品电影 | 亚洲精品乱码久久久久久高潮 | 久久免费av | 久久视频精品 | 亚洲伊人网在线观看 | 久草在线资源网 | 精品一区二区三区在线播放 | 天堂资源在线观看视频 | 欧美综合色在线图区 | 中文一区在线 | 狠狠干五月天 | 91久久国产自产拍夜夜嗨 | 亚洲人成精品久久久久 | www.午夜| 日韩中文字幕在线不卡 | 日韩精品极品视频 | 欧美一区二区日韩一区二区 | 日韩a在线播放 | 最新免费中文字幕 | 亚洲欧洲中文日韩久久av乱码 | 久久伊人免费视频 | 蜜臀av免费一区二区三区 | 91传媒免费在线观看 | 久久精品国产精品亚洲精品 | 国产一区观看 | 在线看的av网站 | 91亚洲精品久久久久图片蜜桃 | 91传媒免费观看 | 91插插视频 | 日韩免费福利 | 在线 国产一区 | 久草久草在线 | 91人人澡人人爽人人精品 | 国产精品麻豆三级一区视频 | 国产一区二区三区免费视频 | 91成人区| 免费成人在线电影 | 国产在线视频资源 | 日韩极品视频在线观看 | 中文字幕在线观看第一页 | 成 人 免费 黄 色 视频 | 国产超碰97 | 欧美日韩一级久久久久久免费看 | 久久激情久久 | 91成人精品一区在线播放69 | 免费观看视频的网站 | 久久久免费毛片 | 国产一区二区精品在线 | 国产经典三级 | 国产精品国产三级国产不产一地 | www.91国产 | 成人福利在线播放 | 久久视频免费 | 国产一卡在线 | av中文字幕在线免费观看 | 久久国产精品区 | 国产亚洲成人网 | 91香蕉视频在线 | 婷婷国产v亚洲v欧美久久 | 中文字幕亚洲综合久久五月天色无吗'' | 亚洲狠狠婷婷综合久久久 | 日韩欧美网站 | 伊人官网| 亚洲色影爱久久精品 | 日韩av高清 | 国产在线a视频 | 国产精品12| 亚洲国产精品一区二区久久hs | 国产精品视频全国免费观看 | 狠狠躁夜夜躁人人爽超碰91 | a电影在线观看 | 中文字幕人成一区 | 欧美a级在线播放 | 精品国产一区二区三区噜噜噜 | 五月综合网| 日韩欧美在线观看一区二区三区 | 久久久高清视频 | 亚洲欧洲精品视频 | 中文字幕麻豆 | 午夜精品一二区 | 最近中文字幕免费 | 国产精品第一 | 亚洲精品日韩一区二区电影 | 国产精品久久久精品 | 久久影院精品 | 国产精品一区二区久久国产 | 色婷婷中文 | 日韩电影一区二区在线 | 91激情视频在线播放 | 中文字幕 国产专区 | 欧美性生交大片免网 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久久久久视 | 激情丁香综合 | 久久久五月天 | 国产中文字幕国产 | 国产人成一区二区三区影院 | 欧美极品xxx | 久久免费视频在线观看 | 国产精品女 | 亚洲一区二区三区在线看 | 免费在线观看污网站 | 手机看片中文字幕 | av最新资源| 久久久国产一区二区三区四区小说 | 黄色一级片视频 | 国产精品99久久久久久宅男 | 一区三区视频在线观看 | 日日夜夜精品视频天天综合网 | 日韩理论在线播放 | 亚洲精品午夜视频 | 国产婷婷色 | 亚洲精品视频在线观看免费视频 | 黄色av一级片 | www.久久色 | 日韩美女久久 | 久久黄色影院 | 热热热热热色 | 精品美女视频 |