vim文本編輯器相關用法

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.pswp.cn/bicheng/18535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18535.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MapStruct高級用法

MapStruct高級用法 依賴注入&#xff08;Using dependency injection&#xff09; Mapper(componentModel SPRING) public interface SpringMapper {SpringMapper MAPPER Mappers.getMapper(SpringMapper.class);PersonDTO personDoToDTO(Person person); }public static fin…

【class18】人工智能初步----語音識別(4)

【class17】 上節課&#xff0c;我們學習了: 語音端點檢測的相關概念&#xff0c;并通過代碼切分和保存了音頻。 本節課&#xff0c;我們將學習這些知識點&#xff1a;1. 序列到序列模型2. 循環神經網絡3. 調用短語音識別接口 知其然&#xff0c;知其所以然 在調用語…

數組單調棧-901. 股票價格跨度、leetcode

單調棧作為一種數據結構在求解類遞增、遞減方面的題目中有較為廣泛的應用&#xff0c;在以往的leetcode中所見到的相關單調棧的題目均為單一元素&#xff0c;今天刷到901題目時&#xff0c;想到了將數組元素作為單調棧中元素的方法進行求解。 題目鏈接及描述 901. 股票價格跨…

【c++leetcode】69. Sqrt(x)

問題入口 二分搜索 最困難的是能否意識到用二分搜索法解題。 算術平方根的區間在[1, x] 。代碼如下&#xff1a; class Solution { public:int mySqrt(int x) {if (x 1 || x 0){return x;}int64_t start 1;int64_t end x;while (start < x){int64_t mid start (en…

開源模型應用落地-Gradio正確集成Fastapi-助力模型交互-實踐篇(二)

一、前言 Gradio提供了直觀的用戶界面,當與Fastapi結合后,用戶可以通過界面輕松地與模型進行交互,上傳數據、獲取推理結果等,使得交互性增強,提升了用戶體驗。 在開源大語言模型遍地開花的時代,正確的使用Gradio和Fastapi,通過兩者的集成,使得模型的部署和使用過程更加…

以果決其行,只為文化的傳承

從他們每一個人的身上&#xff0c;我們看到傳神的東西&#xff0c;就是他們都能用結果&#xff0c;去指引自己前進的方向&#xff0c;這正是我要解讀倪海廈老師的原因&#xff0c;看倪海廈2012年已經去世&#xff0c;到現在已經十幾年時間了&#xff0c;但是我們看現在自學中醫…

【Pandas】深入解析`pd.to_sql()`函數

【Pandas】深入解析pd.to_sql()函數 &#x1f308; 歡迎蒞臨我的個人主頁&#x1f448;這里是我深耕Python編程、機器學習和自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;并樂于分享知識與經驗的小天地&#xff01;&#x1f387; &#x1f393; 博主簡介&#xff1…

2024年第六屆中青杯數學建模競賽淺析

獲取比賽資料&#xff0c;請關注gzh“小何數模”&#xff01; 本次中青杯數學建模的賽題已正式出爐&#xff0c;無論是賽題難度還是認可度&#xff0c;該比賽都是僅次于數模國賽的獨一檔&#xff0c;可以用于國賽前的練手訓練。考慮到大家解題實屬不易&#xff0c;為了幫助大家…

JavaSE:StringBuilder和StringBuffer類

1、引言 在上一篇文章中&#xff0c;我們理解了字符串的常用方法&#xff0c;細心的同學大概已經發現&#xff0c;不管是將字符串中的字符轉變為大寫或小寫&#xff0c;或是完成字符串的替換&#xff0c;又或是去除空白字符等等&#xff0c;只要涉及到字符串的修改&#xff0c…

【PB案例學習筆記】-10 進度條使用

寫在前面 這是PB案例學習筆記系列文章的第10篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance()

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance() 從java9開始, class.newInstance()已過時, 被加上Deprecated強烈反對注解 SuppressWarnings("removal")CallerSensitiveDeprecated(since"9")public T newInstance()throws …

防止自動化攻擊的最佳實踐

防止自動化攻擊的最佳實踐 在當今的網絡安全環境中&#xff0c;保護用戶賬戶免受自動化攻擊已成為每個網站和應用程序的重要任務。攻擊者可以利用多種不同類型的自動化攻擊來嘗試破壞用戶賬戶。本文將詳細介紹常見的攻擊類型及其防御機制&#xff0c;幫助您更好地保護用戶賬戶…

C# ManualResetEvent的用法

在C#中&#xff0c;ManualResetEvent類是一個同步基元&#xff0c;用于控制多個線程的執行順序。下面是一些ManualResetEvent類的常見用法&#xff1a; 等待一個事件的發生&#xff1a;可以使用ManualResetEvent的WaitOne方法來等待事件的發生。當事件被觸發時&#xff0c;Wait…

adb 連接機頂盒命令

抓機頂盒日志的方法&#xff0c;使用此命令進行抓日志&#xff0c;個別無法抓日志的盒子可以使用此方法 1、安卓9.0版本查詢命令 ps -ef |grep com.cm.webos.iptv 2、安卓4.4版本查詢命令 ps |grep com.cm.webos.iptv 3、查詢順序&#xff1a;首先進入shell下進行操作 adb she…

C++青少年簡明教程:for循環語句

C青少年簡明教程&#xff1a;for循環語句 C的for循環語句是一種迭代控制語句&#xff0c;用于重復執行一段代碼。 語法格式&#xff1a; for(表達式1&#xff1b;表達式2&#xff1b;表達式3) 循環體 for循環語句執行流程圖&#xff1a; 不太好理解&#xff0c;請看下圖&am…

VSCode配置Lua5.4安裝

參考&#xff1a;VSCode 配置 Lua 開發環境(清晰明了)_lua vscode-CSDN博客 1.下載 Lua Binaries Download (sourceforge.net) 2.配置環境變量 解壓放到某文件夾&#xff1a; 環境變量&#xff1a; 3.VSCode安裝插件 4.配置 5.測試

Python | Leetcode Python題解之第116題填充每個節點的下一個右側節點指針

題目&#xff1a; 題解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return root# 從根節點開始leftmost rootwhile leftmost.left:# 遍歷這一層節點組織成的鏈表&#xff0c;為下一層的節點更新 next 指針head leftmostwhile head:#…

快解析動態域名解析,實現外網訪問內網數據庫

今天跟大家分享一下如何借助快解析動態域名解析&#xff0c;在兩種特定網絡環境下&#xff0c;實現外網訪問內網mysql數據庫。 第1種網絡環境&#xff1a;路由器分配的是動態公網IP&#xff0c;且有路由器登錄管理權限。如何實現外網訪問內網mysql數據庫&#xff1f; 針對這種…

繼承與Object

一.繼承 Java語言的繼承&#xff1a;單繼承 1.類和類之間的關系 (1)組合關系 公司和員工&#xff0c;學校和學生 (2)繼承關系 學生和人 二.Object類 public class Object {private static native void registerNatives();static {registerNatives();} 1.finalize() 對象…

FPGA時鐘:驅動數字邏輯的核心

一、引言 在FPGA&#xff08;現場可編程門陣列&#xff09;設計中&#xff0c;時鐘信號是不可或缺的關鍵要素。時鐘信號作為時序邏輯的心跳&#xff0c;推動著FPGA內部各個存儲單元的數據流轉。無論是實現復雜的邏輯運算還是處理高速數據流&#xff0c;都需要精確的時鐘信號來保…