Vim cheat sheet:修订间差异

来自WHY42
imported>Soleverlee
Riguz留言 | 贡献
 
(未显示2个用户的11个中间版本)
第1行: 第1行:
=基本命令=
= Vscode vim cheat sheet =
{| class="wikitable" border="1"
 
* Copy the function: Vj%y
 
=基础=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:e filename</code>||Open filename for edition
|-
|<code>:w</code>||Save file
|-
|<code>:q</code>||Exit Vim
|-
|<code>:q!</code>||Quit without saving
|-
|<code>:x</code>||Write file (if changes has been made) and exit
|-
|<code>:sav filename</code>||Saves file as filename
|-
|<code>.</code>||Repeats the last change made in normal mode
|-
|<code>5</code>||Repeats 5 times the last change made in normal mode
|-
|}
 
=在文件中移动=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>k or Up Arrow</code>||move the cursor up one line
|-
|<code>j or Down Arrow</code>||move the cursor down one line
|-
|<code>e</code>||move the cursor to the end of the word
|-
|<code>b</code>||move the cursor to the begining of the word
|-
|<code>0</code>||move the cursor to the begining of the line
|-
|<code>G</code>||move the cursor to the end of the line
|-
|<code>gg</code>||move the cursor to the begining of the file
|-
|<code>L</code>||move the cursor to the end of the file
|-
|<code>:59</code>||move cursor to line 59. Replace 59 by the desired line number.
|-
|<code>20<nowiki>|</nowiki></code>||move cursor to column 20.
|-
|<code>%</code>||Move cursor to matching parenthesis
|-
|<code>[[</code>||Jump to function start
|-
|<code>[{</code>||Jump to block start
|-
|}
 
=剪切、复制和粘贴=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>y</code>||Copy the selected text to clipboard
|-
|<code>p</code>||Paste clipboard contents
|-
|<code>dd</code>||Cut current line
|-
|<code>yy</code>||Copy current line
|-
|<code>y$</code>||Copy to end of line
|-
|<code>D</code>||Cut to end of line
|-
|}
 
=搜索=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>/word</code>||Search word from top to bottom
|-
|<code>?word</code>||Search word from bottom to top
|-
|<code>*</code>||Search the word under cursor
|-
|<code>/\cstring</code>||Search STRING or string, case insensitive
|-
|<code>/jo[ha]n</code>||Search john or joan
|-
|<code>/\< the</code>||Search the, theatre or then
|-
|-
! style="width:200px"|命令||style="width:400px"|用途
|<code>/the\></code>||Search the or breathe
|-                                         
|<code>:e filename </code> ||打开文件编辑     
|-
|-
|<code>:w </code> ||保存修改         
|<code>/\< the\></code>||Search the
|-
|-
|<code>:q </code> ||退出VI           
|<code>/\< ¦.\></code>||Search all words of 4 letters
|-
|-
|<code>:q! </code> ||强制退出,放弃更改
|<code>/\/</code>||Search fred but not alfred or frederick
|-
|-
|<code>:x </code> ||保存并退出       
|<code>/fred\<nowiki>|</nowiki>joe</code>||Search fred or joe
|-
|-
|<code>:sav filename</code> ||另存为           
|<code>/\<\d\d\d\d\></code>||Search exactly 4 digits
|-
|-
|<code>. </code> ||重复上次操作     
|<code>/^\n\{3}</code>||Find 3 empty lines
|-
|-
|<code>5. </code> ||将上次操作重复5次
|<code>:bufdo /searchstr/</code>||Search in all open files
|-
|<code>bufdo %s/xx/yy/g</code>||Search in all the open buffers and replace it
|-
|-
|}
|}


=文件移动=
=替换=
{| class="wikitable" border="1"
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:%s/old/new/g</code>||Replace all occurences of old by new in file
|-
|<code>:%s/onward/forward/gi</code>||Replace onward by forward, case unsensitive
|-
|<code>:%s/old/new/gc</code>||Replace all occurences with confirmation
|-
|<code>:2,35s/old/new/g</code>||Replace all occurences between lines 2 and 35
|-
|<code>:5,$s/old/new/g</code>||Replace all occurences from line 5 to EOF
|-
|<code>:%s/^/hello/g</code>||Replace the begining of each line by hello
|-
|<code>:%s/$/Harry/g</code>||Replace the end of each line by Harry
|-
|<code>:%s/onward/forward/gi</code>||Replace onward by forward, case unsensitive
|-
|<code>:%s/ *$//g</code>||Delete all white spaces
|-
|<code>:g/string/d</code>||Delete all lines containing string
|-
|<code>:v/string/d</code>||Delete all lines containing which didn’t contain string
|-
|<code>:s/Bill/Steve/</code>||Replace the first occurence of Bill by Steve in current line
|-
|<code>:s/Bill/Steve/g</code>||Replace Bill by Steve in current line
|-
|<code>:%s/Bill/Steve/g</code>||Replace Bill by Steve in all the file
|-
|<code>:%s/^M//g</code>||Delete DOS carriage returns (^M)
|-
|<code>:%s/\r/\r/g</code>||Transform DOS carriage returns in returns
|-
|<code>:%s#<[^>]\+>
|-g</code>||Delete HTML tags but keeps text
|-
|<code>:%s/^\(.*\)\n\1$/\1/</code>||Delete lines which appears twice
|-
|<code>Ctrl+a</code>||Increment number under the cursor
|-
|-
! style="width:200px"|命令||style="width:400px"|用途
|<code>Ctrl+x</code>||Decrement number under cursor
|-
|-
| <code> </code>||  
|<code>ggVGg?</code>||Change text to Rot13
|-
|-
| <code> </code>||
|}
|}
=剪切、粘贴和复制=
 
{| class="wikitable" border="1"
=大小写=
{|class="darktable" border="1"
|-
|-
! style="width:200px"|命令||style="width:400px"|用途
!style="width:300px"|命令||style="width:400px"|用途
|-
|-
| <code> </code>||  
|<code>Vu</code>||Lowercase line
|-
|<code>VU</code>||Uppercase line
|-
|<code>g~~</code>||Invert case
|-
|<code>vEU</code>||Switch word to uppercase
|-
|<code>vE~</code>||Modify word case
|-
|<code>ggguG</code>||Set all text to lowercase
|-
|<code>gggUG</code>||Set all text to uppercase
|-
|<code>:set ignorecase</code>||Ignore case in searches
|-
|<code>:set smartcase</code>||Ignore case in searches excepted if an uppercase letter is used
|-
|<code>:%s/\<./\u&/g</code>||Sets first letter of each word to uppercase
|-
|<code>:%s/\<./\l&/g</code>||Sets first letter of each word to lowercase
|-
|<code>:%s/.*/\u&</code>||Sets first letter of each line to uppercase
|-
|<code>:%s/.*/\l&</code>||Sets first letter of each line to lowercase
|-
|-
| <code> </code>||
|}
|}
=读写文件=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:1,10 w outfile</code>||Saves lines 1 to 10 in outfile
|-
|<code>:1,10 w >> outfile</code>||Appends lines 1 to 10 to outfile
|-
|<code>:r infile</code>||Insert the content of infile
|-
|<code>:23r infile</code>||Insert the content of infile under line 23
|-
|}
=文件浏览器=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:e .</code>||Open integrated file explorer
|-
|<code>:Sex</code>||Split window and open integrated file explorer
|-
|<code>:Sex!</code>||Same as :Sex but split window vertically
|-
|<code>:browse e</code>||Graphical file explorer
|-
|<code>:ls</code>||List buffers
|-
|<code>:cd ..</code>||Move to parent directory
|-
|<code>:args</code>||List files
|-
|<code>:args *.php</code>||Open file list
|-
|<code>:grep expression *.php</code>||Returns a list of .php files contening expression
|-
|<code>gf</code>||Open file name under cursor
|-
|}
=和 Unix 系统交互=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:!pwd</code>||Execute the pwd unix command, then returns to Vi
|-
|<code>!!pwd</code>||Execute the pwd unix command and insert output in file
|-
|<code>:sh</code>||Temporary returns to Unix
|-
|<code>$exit</code>||Retourns to Vi
|-
|}
=对齐=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:%!fmt</code>||Align all lines
|-
|<code>!}fmt</code>||Align all lines at the current position
|-
|<code>5!!fmt</code>||Align the next 5 lines
|-
|}
=Tabs/Windows=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:tabnew</code>||Creates a new tab
|-
|<code>gt</code>||Show next tab
|-
|<code>:tabfirst</code>||Show first tab
|-
|<code>:tablast</code>||Show last tab
|-
|<code>:tabm n(position)</code>||Rearrange tabs
|-
|<code>:tabdo %s/foo/bar/g</code>||Execute a command in all tabs
|-
|<code>:tab ball</code>||Puts all open files in tabs
|-
|<code>:new abc.txt</code>||Edit abc.txt in new window
|-
|}
=分屏显示=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:e filename</code>||Edit filename in current window
|-
|<code>:split filename</code>||Split the window and open filename
|-
|<code>ctrl-w up arrow</code>||Puts cursor in top window
|-
|<code>ctrl-w ctrl-w</code>||Puts cursor in next window
|-
|<code>ctrl-w_</code>||Maximize current window vertically
|-
|<code><nowiki>ctrl-w|</nowiki></code>||Maximize current window horizontally
|-
|<code>ctrl-w=</code>||Gives the same size to all windows
|-
|<code>10 ctrl-w+</code>||Add 10 lines to current window
|-
|<code>:vsplit file</code>||Split window vertically
|-
|<code>:sview file</code>||Same as :split in readonly mode
|-
|<code>:hide</code>||Close current window
|-
|<code>:­nly</code>||Close all windows, excepted current
|-
|<code>:b 2</code>||Open #2 in this window
|-
|}
=自动完成=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>Ctrl+n Ctrl+p (in insert mode)</code>||Complete word
|-
|<code>Ctrl+x Ctrl+l</code>||Complete line
|-
|<code>:set dictionary=dict</code>||Define dict as a dictionnary
|-
|<code>Ctrl+x Ctrl+k</code>||Complete with dictionnary
|-
|}
=Marks=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>m {a-z}</code>||Marks current position as {a-z}
|-
|<code>' {a-z}</code>||Move to position {a-z}
|-
|<code><nowiki>''</nowiki></code>||Move to previous position
|-
|}
=缩写=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:ab mail mail@provider.org</code>||Define mail as abbreviation of mail@provider.org
|-
|}
=文本缩进=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:set autoindent</code>||Turn on auto-indent
|-
|<code>:set smartindent</code>||Turn on intelligent auto-indent
|-
|<code>:set shiftwidth=4</code>||Defines 4 spaces as indent size
|-
|<code>ctrl-t, ctrl-d</code>||Indent/un-indent in insert mode
|-
|<code>>></code>||Indent
|-
|<code><<</code>||Un-indent
|-
|<code>=%</code>||Indent the code between parenthesis
|-
|<code>1GVG=</code>||Indent the whole file
|-
|}
=语法高亮=
{|class="darktable" border="1"
|-
!style="width:300px"|命令||style="width:400px"|用途
|-
|<code>:syntax on</code>||Turn on syntax highlighting
|-
|<code>:syntax off</code>||Turn off syntax highlighting
|-
|<code>:set syntax=perl</code>||Force syntax highlighting
|-
[[Category:Linux/Unix]]

2024年3月13日 (三) 03:45的最新版本

Vscode vim cheat sheet

  • Copy the function: Vj%y

基础

命令 用途
:e filename Open filename for edition
:w Save file
:q Exit Vim
:q! Quit without saving
:x Write file (if changes has been made) and exit
:sav filename Saves file as filename
. Repeats the last change made in normal mode
5 Repeats 5 times the last change made in normal mode

在文件中移动

命令 用途
k or Up Arrow move the cursor up one line
j or Down Arrow move the cursor down one line
e move the cursor to the end of the word
b move the cursor to the begining of the word
0 move the cursor to the begining of the line
G move the cursor to the end of the line
gg move the cursor to the begining of the file
L move the cursor to the end of the file
:59 move cursor to line 59. Replace 59 by the desired line number.
20| move cursor to column 20.
% Move cursor to matching parenthesis
[[ Jump to function start
[{ Jump to block start

剪切、复制和粘贴

命令 用途
y Copy the selected text to clipboard
p Paste clipboard contents
dd Cut current line
yy Copy current line
y$ Copy to end of line
D Cut to end of line

搜索

命令 用途
/word Search word from top to bottom
?word Search word from bottom to top
* Search the word under cursor
/\cstring Search STRING or string, case insensitive
/jo[ha]n Search john or joan
/\< the Search the, theatre or then
/the\> Search the or breathe
/\< the\> Search the
/\< ¦.\> Search all words of 4 letters
/\/ Search fred but not alfred or frederick
/fred\|joe Search fred or joe
/\<\d\d\d\d\> Search exactly 4 digits
/^\n\{3} Find 3 empty lines
:bufdo /searchstr/ Search in all open files
bufdo %s/xx/yy/g Search in all the open buffers and replace it

替换

命令 用途
:%s/old/new/g Replace all occurences of old by new in file
:%s/onward/forward/gi Replace onward by forward, case unsensitive
:%s/old/new/gc Replace all occurences with confirmation
:2,35s/old/new/g Replace all occurences between lines 2 and 35
:5,$s/old/new/g Replace all occurences from line 5 to EOF
:%s/^/hello/g Replace the begining of each line by hello
:%s/$/Harry/g Replace the end of each line by Harry
:%s/onward/forward/gi Replace onward by forward, case unsensitive
:%s/ *$//g Delete all white spaces
:g/string/d Delete all lines containing string
:v/string/d Delete all lines containing which didn’t contain string
:s/Bill/Steve/ Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/g Replace Bill by Steve in current line
:%s/Bill/Steve/g Replace Bill by Steve in all the file
:%s/^M//g Delete DOS carriage returns (^M)
:%s/\r/\r/g Transform DOS carriage returns in returns
:%s#<[^>]\+>
:%s/^\(.*\)\n\1$/\1/ Delete lines which appears twice
Ctrl+a Increment number under the cursor
Ctrl+x Decrement number under cursor
ggVGg? Change text to Rot13

大小写

命令 用途
Vu Lowercase line
VU Uppercase line
g~~ Invert case
vEU Switch word to uppercase
vE~ Modify word case
ggguG Set all text to lowercase
gggUG Set all text to uppercase
:set ignorecase Ignore case in searches
:set smartcase Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g Sets first letter of each word to uppercase
:%s/\<./\l&/g Sets first letter of each word to lowercase
:%s/.*/\u& Sets first letter of each line to uppercase
:%s/.*/\l& Sets first letter of each line to lowercase

读写文件

命令 用途
:1,10 w outfile Saves lines 1 to 10 in outfile
:1,10 w >> outfile Appends lines 1 to 10 to outfile
:r infile Insert the content of infile
:23r infile Insert the content of infile under line 23

文件浏览器

命令 用途
:e . Open integrated file explorer
:Sex Split window and open integrated file explorer
:Sex! Same as :Sex but split window vertically
:browse e Graphical file explorer
:ls List buffers
:cd .. Move to parent directory
:args List files
:args *.php Open file list
:grep expression *.php Returns a list of .php files contening expression
gf Open file name under cursor

和 Unix 系统交互

命令 用途
:!pwd Execute the pwd unix command, then returns to Vi
!!pwd Execute the pwd unix command and insert output in file
:sh Temporary returns to Unix
$exit Retourns to Vi

对齐

命令 用途
:%!fmt Align all lines
!}fmt Align all lines at the current position
5!!fmt Align the next 5 lines

Tabs/Windows

命令 用途
:tabnew Creates a new tab
gt Show next tab
:tabfirst Show first tab
:tablast Show last tab
:tabm n(position) Rearrange tabs
:tabdo %s/foo/bar/g Execute a command in all tabs
:tab ball Puts all open files in tabs
:new abc.txt Edit abc.txt in new window

分屏显示

命令 用途
:e filename Edit filename in current window
:split filename Split the window and open filename
ctrl-w up arrow Puts cursor in top window
ctrl-w ctrl-w Puts cursor in next window
ctrl-w_ Maximize current window vertically
ctrl-w| Maximize current window horizontally
ctrl-w= Gives the same size to all windows
10 ctrl-w+ Add 10 lines to current window
:vsplit file Split window vertically
:sview file Same as :split in readonly mode
:hide Close current window
:­nly Close all windows, excepted current
:b 2 Open #2 in this window

自动完成

命令 用途
Ctrl+n Ctrl+p (in insert mode) Complete word
Ctrl+x Ctrl+l Complete line
:set dictionary=dict Define dict as a dictionnary
Ctrl+x Ctrl+k Complete with dictionnary

Marks

命令 用途
m {a-z} Marks current position as {a-z}
' {a-z} Move to position {a-z}
'' Move to previous position

缩写

命令 用途
:ab mail mail@provider.org Define mail as abbreviation of mail@provider.org

文本缩进

命令 用途
:set autoindent Turn on auto-indent
:set smartindent Turn on intelligent auto-indent
:set shiftwidth=4 Defines 4 spaces as indent size
ctrl-t, ctrl-d Indent/un-indent in insert mode
>> Indent
<< Un-indent
=% Indent the code between parenthesis
1GVG= Indent the whole file

语法高亮

命令 用途
:syntax on Turn on syntax highlighting
:syntax off Turn off syntax highlighting
:set syntax=perl Force syntax highlighting