vim文本编辑器相关用法

news/2024/7/22 14:13:11/文章来源:https://blog.csdn.net/shippingxing/article/details/139280350

1. 引言

Vim,一个功能强大的文本编辑器,它在程序员和系统管理员中广受欢迎。Vim是Vi的增强版,提供了一系列高级功能,包括语法高亮、代码补全、多窗口编辑等。

2. Vim的安装

Vim的安装过程在不同的Linux发行版中略有不同。以下是一些主流Linux发行版的安装步骤,以及一些额外的配置建议。

2.1 在Ubuntu和Debian中的安装

Ubuntu和Debian用户可以通过APT包管理器轻松安装Vim。打开终端并输入以下命令:

sudo apt update
sudo apt install vim

如果你需要Vim的图形界面版本,可以安装vim-gtkvim-gnome(取决于你的桌面环境):

sudo apt install vim-gtk
# 或者
sudo apt install vim-gnome

2.2 在Fedora中的安装

Fedora用户可以使用DNF包管理器来安装Vim。在终端中输入:

sudo dnf update
sudo dnf install vim

2.3 在CentOS和RHEL中的安装

CentOS和RHEL用户可以使用YUM或DNF(CentOS 8及以后版本)包管理器安装Vim。在终端中输入:

sudo yum update
sudo yum install vim
# 或者在CentOS 8及以后版本使用
sudo dnf install vim

2.4 在Arch Linux和Manjaro中的安装

Arch Linux和Manjaro用户可以使用Pacman包管理器来安装Vim。在终端中输入:

sudo pacman -Syu
sudo pacman -S vim

2.5 安装Vim的增强版本

如果你需要Vim的增强版本,比如vim-nox,它不包含图形用户界面,但包含所有其他功能,你可以使用以下命令安装:

sudo apt install vim-nox  # 对于Debian/Ubuntu
sudo dnf install vim-nox  # 对于Fedora
sudo yum install vim-nox  # 对于CentOS/RHEL
sudo pacman -S vim-nox    # 对于Arch Linux/Manjaro

2.6 Vim的版本管理

如果你需要管理多个Vim版本或者想要安装最新版本的Vim,可以考虑使用版本管理工具,如nvim(Neovim),它是一个高度可扩展的Vim分支。

sudo apt install neovim  # 在Debian/Ubuntu中安装Neovim
sudo dnf install neovim   # 在Fedora中安装Neovim
sudo yum install neovim   # 在CentOS/RHEL中安装Neovim
sudo pacman -S neovim     # 在Arch Linux/Manjaro中安装Neovim

2.7 配置Vim

安装Vim后,你可能想要对其进行配置,以适应你的开发需求。创建或编辑你的.vimrc文件来自定义Vim:

vim ~/.vimrc

在这个文件中,你可以设置颜色方案、键绑定、插件等。

2.8 Vim插件管理

Vim的插件可以显著提高你的编辑效率。使用插件管理器如Vundle、Pathogen或vim-plug来安装和管理插件。例如,使用Vundle安装插件的步骤如下:

  1. 安装Vundle:
    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    
  2. 配置.vimrc以使用Vundle:
    set nocompatible              " 必须
    filetype off                  " 必须
    call vundle#begin('~/.vim/bundle/')Plugin 'VundleVim/Vundle.vim'
    " 其他插件
    Plugin 'tpope/vim-fugitive'call vundle#end()            " 必须
    filetype plugin indent on    " 必须
    
  3. 安装插件:
    vim +PluginInstall +qall
    

通过这些步骤,你可以在任何Linux发行版上安装Vim,并根据你的需要进行配置和定制。

3. Vim的基础概念

Vim是一个高度可定制的文本编辑器,它拥有多种模式,每种模式都提供了不同的功能。了解这些模式是掌握Vim的关键。

3.1 Vim的模式

3.1.1 普通模式(Normal Mode)

普通模式是Vim的默认模式,用于执行命令和导航。在这个模式下,你可以使用各种快捷键来移动光标、复制、粘贴、查找和替换文本等。

示例:

  • hjkl:分别向左、下、上、右移动光标。
  • gg:跳转到文件的第一行。
  • G:跳转到文件的最后一行。
3.1.2 插入模式(Insert Mode)

在普通模式下按下i键即可进入插入模式,这时可以开始输入文本。插入模式下,Vim的行为类似于其他文本编辑器。

示例:

  • i:进入插入模式,在光标位置前插入文本。
  • I:进入插入模式,在当前行的开头插入文本。
  • a:进入插入模式,在光标后插入文本。
  • A:进入插入模式,在当前行的末尾插入文本。
3.1.3 命令行模式(Command-line Mode)

命令行模式允许你输入命令来执行更复杂的操作,如保存文件、查找文本、替换文本等。

示例:

  • :w:保存文件。
  • :q:退出Vim。
  • :wq:保存文件并退出Vim。
  • /pattern:搜索指定的文本模式。
3.1.4 可视模式(Visual Mode)

可视模式允许你高亮并选择文本块,以便进行复制、删除或替换。

示例:

  • v:进入可视模式,选择字符。
  • V:进入可视行模式,选择整行。
  • Ctrl+v:进入可视块模式,选择列。

3.2 Vim的启动和退出

3.2.1 启动Vim

启动Vim并打开文件:

vim filename.txt

如果没有指定文件,Vim将启动一个空白窗口。

3.2.2 退出Vim

退出Vim有几种不同的方式:

  • :q:退出Vim。
  • :q!:不保存更改并退出Vim。
  • :wq:保存更改并退出Vim。
  • ZZ(大写Z两次):保存更改并退出Vim(快捷方式)。

3.3 Vim的窗口和标签

3.3.1 窗口分割

Vim允许你分割窗口,以便同时查看和编辑多个文件。

示例:

  • :split:sp:垂直分割窗口。
  • :vsplit:vsp:水平分割窗口。
3.3.2 标签页

使用标签页可以在Vim中打开多个文件,而不需要分割窗口。

示例:

  • :tabnew:tabnew filename:打开新标签页。
  • gt:切换到下一个标签页。
  • gT:切换到上一个标签页。

3.4 Vim的缓冲区

缓冲区是Vim用来存储打开文件的内存区域。你可以在缓冲区之间切换,而不需要关闭它们。

示例:

  • :ls:列出所有打开的缓冲区。
  • :bn:切换到下一个缓冲区。
  • :bp:切换到上一个缓冲区。

3.5 Vim的寄存器

Vim拥有多个寄存器,可以用来存储文本,以便在不同位置或文件中复制和粘贴。

示例:

  • 使用"+y复制当前行到系统剪贴板。
  • 使用"+p从系统剪贴板粘贴文本。

4. Vim界面和布局

Vim的界面虽然看起来简洁,但它提供了丰富的功能和定制选项。了解Vim的界面和布局有助于你更高效地使用这个强大的编辑器。

4.1 状态栏(Status Line)

状态栏位于窗口的底部,显示了当前文件的状态信息,如文件名、光标位置、文件状态等。

示例:

  • -- INSERT --:显示当前处于插入模式。
  • file.txt [+]:表示file.txt文件已被修改,需要保存。

4.2 命令行(Command-line)

命令行位于状态栏上方,用于输入命令、查找文本、执行宏等。

示例:

  • :e filename:在命令行模式下打开一个文件。
  • :%s/old/new/g:替换当前文件中所有的“old”为“new”。

4.3 缓冲区列表

缓冲区列表是Vim用来追踪所有打开文件的机制。

示例:

  • :ls:列出所有打开的缓冲区。
  • :bnext:bn:切换到下一个缓冲区。
  • :bprev:bp:切换到上一个缓冲区。

4.4 标签页(Tabs)

Vim允许你使用标签页来管理多个文件。

示例:

  • :tabnew filename:创建一个新标签页并打开filename
  • gt:跳转到下一个标签页。
  • gT:跳转到上一个标签页。

4.5 分割窗口(Split Windows)

Vim支持窗口分割,允许你同时查看和编辑多个文件。

示例:

  • :split或简写为:sp:垂直分割窗口。
  • :vsplit或简写为:vs:水平分割窗口。
  • Ctrl+w方向键:在分割的窗口间移动光标。

4.6 Vim的窗口布局(Window Layout)

你可以通过组合使用窗口分割和标签页来创建复杂的编辑布局。

示例:

  • :tabnew + :split:创建一个新的标签页,并在其中垂直分割窗口。
  • :vsplit + gt:水平分割当前窗口,并切换到下一个标签页。

4.7 状态栏定制(Customizing the Status Line)

状态栏可以被定制以显示更多有用的信息。

示例:

  • .vimrc中添加set statusline+=%f以显示当前文件名。
  • 使用%<, %h, %m, %r, %=, %{...}等来定制状态栏,显示文件路径、帮助信息、文件是否被修改等。

4.8 显示行号(Displaying Line Numbers)

显示行号有助于代码导航和引用。

示例:

  • :set number:在所有窗口中显示行号。
  • :set relativenumber:显示相对行号,当前行上方的行号为绝对值,下方为相对于当前行的偏移量。

4.9 Vim的语法高亮(Syntax Highlighting)

Vim支持语法高亮,帮助识别不同的编程语言元素。

示例:

  • :syntax on:开启语法高亮。
  • .vimrc中为特定文件类型设置高亮:autocmd FileType python setlocal syntax=on

4.10 Vim的折叠功能(Folding)

Vim的折叠功能允许你将代码块折叠起来,以便于查看和导航。

示例:

  • zf:创建一个折叠。
  • zM:折叠所有级别。
  • zR:展开所有折叠。

5. 基本操作

Vim的基本操作是掌握这个编辑器的关键。以下是一些基本操作的详细介绍和示例,帮助你快速上手。

5.1 光标移动

在普通模式下,Vim提供了多种方式来移动光标。

示例:

  • hjkl:分别向左、下、上、右移动光标。
  • 0:移动到当前行的开头。
  • $:移动到当前行的末尾。
  • gg:移动到文件的第一行。
  • G:移动到文件的最后一行。
  • {}:移动到段落的开始或结束。

5.2 文本选择

Vim的可视模式允许你选择文本块,然后执行复制、删除等操作。

示例:

  • v:进入可视模式,逐字符选择。
  • V:进入可视行模式,选择整行。
  • Ctrl+v:进入可视块模式,选择列。
  • o:在可视模式下,切换到选择区域的另一端。

5.3 文本插入和删除

在插入模式下,你可以添加或修改文本。在普通模式下,你可以删除或复制文本。

示例:

  • i:进入插入模式,在当前光标位置前插入。
  • I:进入插入模式,在当前行首插入。
  • a:进入插入模式,在当前光标后插入。
  • A:进入插入模式,在当前行末插入。
  • x:在普通模式下,删除当前光标下的字符。
  • dd:删除当前行。
  • D:删除从当前光标到行末的内容。

5.4 复制和粘贴文本

复制和粘贴是编辑文本时常用的操作。

示例:

  • yy:复制当前行。
  • p:在普通模式下,粘贴复制的内容到光标后。
  • P:粘贴复制的内容到光标前。
  • yw:复制一个单词。
  • yiw:在可视模式下复制当前光标下的单词。

5.5 撤销和重做

Vim允许你撤销和重做你的操作。

示例:

  • u:撤销上一个操作。
  • Ctrl+r:重做上一个撤销的操作。

5.6 查找和替换

Vim提供了强大的查找和替换功能。

示例:

  • /word:向下查找"word"。
  • ?word:向上查找"word"。
  • n:跳转到下一个匹配项。
  • N:跳转到上一个匹配项。
  • :s/old/new/g:替换当前行中的"old"为"new"。
  • :%s/old/new/g:替换整个文件中的"old"为"new"。

5.7 替换单个字符

在普通模式下,你可以替换单个字符。

示例:

  • r:替换当前光标下的字符。
  • R:进入替换模式,直到按下Esc

5.8 跳转到指定行

快速跳转到文件中的指定行。

示例:

  • :123:跳转到文件的第123行。

5.9 标记和跳转

Vim允许你设置标记并快速跳转。

示例:

  • ma:在当前位置设置一个名为a的标记。
  • ``a:跳转到标记a`的位置。
  • 'a:跳转到标记a所在行的行首。

5.10 缩进和对齐

Vim提供了缩进和对齐文本的功能。

示例:

  • >>:将当前行向右缩进。
  • <<:将当前行向左缩进。
  • =:自动对齐当前行。

6. 编辑文本

Vim提供了丰富的文本编辑功能,从简单的插入和删除到复杂的替换和格式化。以下是一些基本和高级文本编辑技巧的详细介绍和示例。

6.1 插入文本

在Vim中,有多种方式可以进入插入模式来插入文本。

示例:

  • i:进入插入模式,在当前光标位置插入。
  • I:进入插入模式,在当前行首插入。
  • a:进入插入模式,在当前光标后插入。
  • A:进入插入模式,在当前行末插入。
  • o:在当前行下方新开一行并进入插入模式。
  • O:在当前行上方新开一行并进入插入模式。

6.2 删除文本

Vim允许你以多种方式删除文本,从单个字符到整行。

示例:

  • x:删除当前光标下的字符。
  • dd:删除当前行。
  • dw:删除一个单词。
  • D:删除从当前光标到行末的内容。
  • d$:删除当前光标到行末的所有文本。
  • d0:删除当前光标到行首的所有文本。

6.3 替换文本

替换文本是编程和文本编辑中的常见任务。

示例:

  • r:替换当前光标下的单个字符。
  • R:进入替换模式,直到按下Esc
  • :s/old/new:替换当前行中第一个出现的"old"为"new"。
  • :s/old/new/g:替换当前行中所有出现的"old"为"new"。
  • :%s/old/new/g:替换整个文件中所有出现的"old"为"new"。

6.4 复制和粘贴文本

复制和粘贴文本是提高编辑效率的重要功能。

示例:

  • yy:复制当前行。
  • 2yy:复制当前光标下的两行。
  • yw:复制当前光标下的单词。
  • p:粘贴复制的内容到光标后。
  • P:粘贴复制的内容到光标前。
  • yank命令(需要插件支持):跨文件复制文本。

6.5 撤销和重做

Vim允许你撤销和重做操作,这是探索和实验时的救星。

示例:

  • u:撤销上一个操作。
  • Ctrl+r:重做上一个撤销的操作。

6.6 块操作

使用可视块模式可以对列进行编辑。

示例:

  • Ctrl+v:进入可视块模式。
  • 方向键:选择列。
  • y:复制选中的列。
  • d:删除选中的列。

6.7 替换字符

可以替换文本中的特定字符。

示例:

  • :%s/char1/char2/g:将文件中所有的char1替换为char2

6.8 替换整行

替换整行文本,而不仅仅是字符。

示例:

  • :s/^old/new/:将当前行以"old"开头的文本替换为"new"。

6.9 格式化文本

Vim提供了格式化文本的功能,这对于代码和文档编辑非常有用。

示例:

  • gq:格式化选中的文本或整行。
  • ggVGgq:格式化整个文件。

6.10 缩进和对齐

自动缩进和对齐文本,特别是代码,可以提高可读性。

**示例:``
=i`:对当前光标下的单词进行对齐。

  • ==:对当前行进行自动缩进。
  • gg=G:自动缩进整个文件。

6.11 插入模式下的多行编辑

在插入模式下,你可以执行一些特殊的命令来编辑多行。

示例:

  • Ctrl+t:在插入模式下,插入当前光标下的单词的下一个匹配项。
  • Ctrl+d:在插入模式下,插入当前光标下的单词的前一个匹配项。

7. 查找和替换

Vim的查找和替换功能是编辑文本时不可或缺的工具。它们可以帮助你快速定位文本,以及批量修改内容。

7.1 查找文本

Vim提供了多种查找文本的方法,包括正向查找和反向查找。

示例:

  • /word:向下查找“word”。
  • ?word:向上查找“word”。
  • n:跳转到下一个匹配项。
  • N:跳转到上一个匹配项。
  • *:查找当前光标下的单词,并向下跳转。
  • #:查找当前光标下的单词,并向上跳转。

7.2 高级查找

Vim的查找功能支持正则表达式,这使得查找更加灵活和强大。

示例:

  • /[0-9]:查找任意数字。
  • /\bword\b:查找完整单词“word”(避免部分匹配)。
  • /^The:查找以“The”开头的行。

7.3 查找并执行命令

结合查找和其他命令,可以执行更复杂的操作。

示例:

  • :%s//new/g:将文件中所有匹配的内容替换为“new”。
  • /word/:查找“word”,然后可以执行:'<,'+s/old/new/g来替换从当前匹配到下一个匹配之间的所有“old”为“new”。

7.4 替换文本

替换文本是编辑工作中的一个基本操作,Vim提供了强大的替换功能。

示例:

  • :s/old/new:替换当前行第一个出现的“old”为“new”。
  • :s/old/new/g:替换当前行所有出现的“old”为“new”。
  • :%s/old/new/g:替换整个文件中所有出现的“old”为“new”。

7.5 确认替换

在执行替换操作时,Vim可以逐个确认每个替换。

示例:

  • :%s/old/new/gc:替换整个文件中所有出现的“old”为“new”,并在替换前进行确认。

7.6 可视模式下的查找和替换

在可视模式下,你可以执行查找和替换操作,仅针对选定的文本。

示例:

  • 进入可视模式,选择文本,然后按:,Vim会提示输入命令,如s/old/new/g,仅替换选定文本中的“old”为“new”。

7.7 跨文件查找

Vim允许你在多个文件中查找文本。

示例:

  • :vimgrep /word/ **/*.txt:在当前目录及其子目录下的所有.txt文件中查找“word”。

7.8 查找历史

Vim保留了你的查找历史,你可以通过历史快速重新查找。

示例:

  • Ctrl+oCtrl+i:在跳转历史中前后导航。

7.9 查找并打开文件

结合查找和文件打开功能,可以快速定位并编辑文件。

示例:

  • :find filename:查找并打开名为“filename”的文件。

7.10 替换模式

Vim的替换模式允许你连续替换多个字符。

示例:

  • R:进入替换模式,替换字符直到按Esc

8. 故障排查和常见问题

在使用Vim的过程中,你可能会碰到一些常见的问题。以下是一些详细的故障排查步骤和示例,帮助你快速定位并解决问题。

8.1 Vim启动失败

如果Vim启动失败或行为异常,可能是因为配置文件错误或插件冲突。

示例:

  • 尝试启动vim -u NONE以不加载任何配置文件。
  • 检查~/.vimrc$VIMRUNTIME/vimrc文件是否存在语法错误。

8.2 插件管理问题

插件安装或更新后可能导致Vim出现问题。

示例:

  • 使用:PluginList查看所有已安装插件。
  • 尝试禁用或删除最近安装的插件,使用:PluginDisable <name>

8.3 性能问题

Vim响应慢或运行缓慢可能是由于性能问题。

示例:

  • 关闭语法高亮::set nosyntax
  • 减少打开的缓冲区数量::bufdo bdel删除未修改的缓冲区。

8.4 文件保存问题

有时Vim可能无法保存文件,尤其是当文件权限或磁盘空间问题时。

示例:

  • 检查文件权限:ls -l filename
  • 检查磁盘空间:df -h
  • 强制保存文件::w!

8.5 撤销历史问题

如果撤销操作出现问题,可能是因为撤销历史被意外修改或损坏。

示例:

  • 检查撤销历史设置::set undodir?
  • 尝试恢复撤销历史::undo <number>跳转到特定撤销级别。

8.6 查找和替换问题

查找和替换操作可能因为正则表达式错误或命令使用不当而失败。

示例:

  • 检查正则表达式是否正确:/pattern
  • 使用:help pattern查看正则表达式帮助。
  • 确认替换命令的正确性::%s/old/new/g

8.7 窗口分割问题

在使用窗口分割时可能会遇到问题,如无法分割或分割后的窗口无法正常使用。

示例:

  • 检查是否有映射或自动命令影响了窗口分割::map:autocmd
  • 使用:split:vsplit命令创建新窗口。

8.8 Vim脚本错误

自定义脚本或.vimrc配置错误可能导致Vim行为异常。

示例:

  • 使用:scriptnames查看所有已加载的脚本。
  • 使用:verbose set <option>?查看选项的来源。

8.9 Vim版本兼容性问题

不同版本的Vim之间可能存在功能差异,导致某些命令或插件不兼容。

示例:

  • 检查Vim版本::echo v:version
  • 查找特定功能或插件的最低版本要求。

8.10 通用故障排查技巧

  • 使用:messages查看错误和信息消息。
  • 使用:help <topic>搜索Vim的帮助文档。
  • 使用:verbose命令获取更详细的执行信息。

8.11 Vim启动慢

Vim启动慢可能是因为加载了太多插件或脚本。

示例:

  • 使用:verbo on查看启动时加载的所有脚本。
  • 使用:profile start:profile file命令分析启动性能。

8.12 Vim崩溃问题

Vim崩溃可能是由于内存不足或内部错误。

示例:

  • 检查系统日志,如/var/log/syslogdmesg
  • 使用:helpcrash-recovery查看Vim的崩溃恢复帮助。

8.13 Vim模式问题

有时Vim可能无法正确识别或切换模式。

示例:

  • 检查是否有映射影响了模式切换::map
  • 确保没有插件或脚本错误地修改了模式行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1054150.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国企业出海,哪些业务需要负载均衡?

国内企业出海的进程正在加速。中国的出海企业剑指跨境电商、社交、游戏、短剧等市场&#xff0c;其中尤其以跨境电商的数据最为突出。据官方数据&#xff0c;2023年我国跨境电商进出口总额达到2.38万亿元&#xff0c;比2016年增长近50倍&#xff0c;占货物贸易总规模的5.7%。 …

电源小白入门学习8——电荷泵电路原理及使用注意事项

电源小白入门学习8——电荷泵电路原理及使用注意事项 电荷泵简介电荷泵原理电荷泵设计过程中需要注意的点fly电容的安秒平衡DC/DC功率转换技术对比 电荷泵简介 电荷泵&#xff08;Charge Pump&#xff09;是一种电路拓扑结构&#xff0c;用于实现电压升压或降压的功能。它通过…

记录深度学习GPU配置,下载CUDA与cuDnn

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip cuda历史版本网址 CUDA Toolkit Archive | NVIDIA Developer 自己下载过11.0.1版本 点击下载local版本,本地安装,有2个多GB,很大,我不喜欢network版本,容易掉线 cuDnn https://developer.nvi…

clickhouse——clickhouse单节点部署及基础命令介绍

clickhouse支持运行在主流的64位CPU架构的linux操作系统之上&#xff0c;可以通过源码编译&#xff0c;预编译压缩包&#xff0c;docker镜像和rpm等多种方式进行安装。 一、单节点部署 1、安装curl工具 yum install -y curl 2、添加clickhouse的yum镜像 curl -s https://pack…

「数据结构」队列

目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页&#xff1a;海盗猫鸥 本篇专题&#xff1a;数据结构 多谢大家的支持啦&#xff…

制作Dcoker镜像

文章目录 一、Docker构建镜像的原理1、镜像分层原理2、Docker的镜像结构3、分层存储原理4、构建命令与层的关系5、最终镜像的创建 二、docker commit 构建镜像1、使用场景2、手动制作yum版的nginx镜像2.1、启动一个centos容器&#xff0c;安装好常用的软件以及nginx2.2、关闭ng…

STM32——定时器

一、简介 *定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 *16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 *不仅具备基本的定时中断功能&#xff0c;而且还包含内外时钟源选择、输入…

STM32使用ST-LINK下载程序中需要注意的几点

使用keil5的ST-link下载界面 前提是ST-LINK已经连接好&#xff0c;&#xff08;下图中是没有连接ST-link设备&#xff09;&#xff0c;只是为了展示如何查看STlink设备是否连接的方式 下载前一定设置下载完成后自启动 这个虽然不是必须&#xff0c;但对立即看到新程序的现象…

Unity功能——设置Camera,实现玩家被攻击后晃动效果

一、方法说明&#xff1a; 来源&#xff1a;siki学院&#xff1a;Unity项目捕鱼达人&#xff0c;功能学习记录&#xff1b; 效果摘要&#xff1a;通过调整相机移动&#xff0c;视觉感觉玩家面板剧烈晃动&#xff0c;实现被boss攻击时的震动效果。 使用场景说明&#xff1a; …

Python读取Excel表格文件并绘制多列数据的曲线图

本文介绍基于Python语言&#xff0c;读取Excel表格数据&#xff0c;并基于给定的行数范围内的指定列数据&#xff0c;绘制多条曲线图&#xff0c;并动态调整图片长度的方法。 首先&#xff0c;我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件&#xff0c;其第一列为…

【前端学习笔记】HTML基础

HTML 一、HTML介绍1.HTML概念2.文档声明3.字符编码4. HTML标签5. HTML属性 二、标签1.meta标签2.语义标签3.布局标签4.列表5.超链接6.图片7.字符实体8.内联格式9.HTML 表格10.HTML 表单 三、HTML5新特性1. 本地存储2. Cookie3. 语义化标签4.多媒体元素5.表单增强6.Canvas7.SVG …

【算法】位运算算法——判断字符是否唯一

题解&#xff1a;判断字符是否唯一(位运算算法) 目录 1.题目2.题解3.位图参考代码4.细节5.总结 1.题目 题目链接&#xff1a;LINK 2.题解 题解有两种方法&#xff0c; 一是做一个哈希数组&#xff0c;去查重&#xff1b; 二是直接用一个变量每一位来对应表示是否有这个字母…

解决Element组件el-switch在Vue中值的绑定与回显问题

概要 Switch 开关表示两种相互对立的状态间的切换,多用于触发「开/关」。可当一个布尔值进行使用。 问题描述与解决 引入Element组件的switch到Vue中,可以读取switch的值,但如果放在页面中,不能回显上去。 如上图,无论值是"否"还是“是”。都不能正确渲染到页…

Kubernetes部署dashboard

Kubernetes部署dashboard Kubernetes集群安装 鲲鹏arm64架构下安装KubeSphere linux安装部署k8s(kubernetes)和解决遇到的坑 dashboard部署 $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashbo…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率&#xff1a;hashcode的时间复杂度为O(1)&#xff08;因为只要计算一次哈…

生产者延迟消息和重试机制

messageDelayLevel1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 延迟消息级别public PutMessageResult putMessage(final MessageExtBrokerInner msg) {//事务消息处理if (tranType MessageSysFlag.TRANSACTION_NOT_TYPE|| tranType MessageSysFlag.TRANSACT…

Filebeat进阶指南:核心架构与功能组件的深度剖析

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是ELK 2、FileBeat在ELK中的角色 二、Fil…

【机器学习】Pandas中to_pickle()函数的介绍与机器学习中的应用

【机器学习】Pandas中to_pickle()函数的介绍和机器学习中的应用 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#…

卧式混料机:混合设备的智慧之选

卧式混料机&#xff0c;顾名思义&#xff0c;是一种采用卧式结构的混合设备。它的设计精巧&#xff0c;结构紧凑&#xff0c;不仅占用空间小&#xff0c;而且操作简便&#xff0c;维护方便。与传统的立式混料机相比&#xff0c;卧式混料机在混合效率、混合均匀度以及物料适应性…

Android环境下Mesa初始化流程重学习之eglCreateContext

Mesa初始化流程重学习之eglCreateContext 引言 没有啥好说的了&#xff0c;直接上手撸代码&#xff01;总得找点事情干不是!我打工我快乐&#xff01;我奋斗&#xff0c;我快乐&#xff01; 一. 核心结构体之间的关联 二. eglCreateContext流程分析 eglCreateContext(...)//s…