This articles is published 1233 days ago and last updated 597 days ago, some information may be out of date.
Linux 的命令基本用法 - vim 編輯器
前言:
nano
是簡單好用的文件編輯器,但熟練vim
後會讓你在編輯處理上更得心應手。大部份內容取自鳥哥的vim 程式編輯器教學
vim編輯器三種模式:
一般模式可以移動光標,複製、貼上、刪除等動作
可以進行文件編輯(即一般模式以外的動作)
可以進行顯示行數、搜尋、替換、儲存及退出等動作
如圖示(來自鳥哥)ESC
是退回到一般模式
,編輯模式
、命令模式
切換都要經一般模式才可以。
一般模式 (Normal mode) |
- 按鍵說明
移動游標的方法 |
h 或 向左方向鍵(←) | 游標向左移動一個字元 |
---|---|
j 或 向下方向鍵(↓) | 游標向下移動一個字元 |
k 或 向上方向鍵(↑) | 游標向上移動一個字元 |
l 或 向右方向鍵(→) | 游標向右移動一個字元 |
如向下移動 20 列,可以使用 "20j" 或 "20↓" 的組合按鍵即可!
Ctrl + f | 螢幕『向下』移動一頁,相當於 [Page Down]按鍵 |
---|---|
Ctrl + b | 螢幕『向上』移動一頁,相當於 [Page Up] 按鍵 |
0 或功能鍵Home | 這是數字『 0 』:移動到這一行的最前面字元處 |
$ 或功能鍵End | 移動到這一行的最後面字元處 |
gg | 移動到這個檔案的第一行,相當於 1G 啊! |
G | 移動到這個檔案的最後一行 |
n+Enter | n 為數字。游標向下移動 n 行 |
搜尋和取代 |
/word | 向游標之下尋找一個名稱為 word 的字串。 |
---|
使用 /word 配合 n(向下搜尋下一個) 及 N (向前搜尋上一個),可以讓你重複的找到一些你搜尋的關鍵字!
:1,20s/word1/word2/g | 在第 1 與 20 列之間尋找 word1 這個字串,並將該字串取代為 word2 |
---|---|
:1,$s/word1/word2/g | 從第一列到最後一列尋找 word1 字串,並將該字串取代為 word2 |
:1,$s/word1/word2/gc | 同上,但在取代前顯示確認 (confirm) 是否需要取代! |
:10,22s/^/#/g | 起始行號(10),結束行號(22)s/^/註釋符/g 插入註釋。 |
刪除無內容的空白行列 |
一般模式 (normal mode) | 註解 |
---|---|
:g/^$/d | 刪除空白行。 |
:g/^\s*$/d | 刪除空白行和只有空格[Space]沒有內容的空白行。 |
刪除、複製與貼上 |
x,X | x 為向後刪除一個字元 (相當於 [del] 按鍵),X 為向前刪除一個字元(相當於 [Backspace]鍵) |
---|---|
dd | 刪除游標所在的那一整行 |
ndd | n 為數字。刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 行 |
yy | 複製游標所在的那一行 |
nyy | n 為數字。複製游標所在的向下 n 列,例如 20yy 則是複製 20 行 |
p,P | p 為將已複製的資料在游標下一列貼上,P 則為貼在游標上一行 |
u | 復原前一個動作 |
Ctrl+r | 重做上一個動作 |
. | 是小數點!意思是重複前一個動作的意思 |
編輯模式 (insert mode) |
左下角處會出現INSERT
或REPLACE
的字眼
i,I | 進入插入模式(Insert mode): i 為『從目前游標所在處插入』, I 為『在目前所在行的第一個非空白字元處開始插入』。 |
---|---|
a,A | 進入插入模式(Insert mode): a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在行的最後一個字元處開始插入』 |
o,O | 進入插入模式(Insert mode): 這是英文字母 o 的大小寫。o 為『在目前游標所在的下一行處插入新的一行』; O 為在目前游標所在處的上一行插入新的一行 |
r,R | 進入取代模式(Replace mode): r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止; |
Esc | 退出編輯模式(回到一般模式) |
命令模式 (command-line mode) |
:w | 將編輯的資料寫入硬碟檔案中 |
---|---|
:q | 離開 vi |
:wq | 儲存後離開,若為 :wq! 則為強制儲存後離開 |
:set nu | 顯示行號,設定之後,會在每一列的字首顯示該列的行號 |
:set nonu | 與 set nu 相反,為取消行號! |
:! command | 暫時離開 vim 執行 command 的顯示結果! |
額外: 配合bash的工作管理 |
bash的工作管理
可以在Terminal
中自由切換到不同工作任務。
如: 在vim
使用中暫時退到背景(background)
中執行,待複製好資料後,再執行vim
的工作為前景(foreground)
,貼上剛才複製的內容。
常見的工作管理使用的符號與組合按鍵如下:
組合按鍵 | 作用 |
---|---|
command & | 直接將 command 丟到背景中執行 |
[ctrl] + z | 將目前執行的工作丟到背景中暫停 |
jobs -l | 列出目前的工作資訊 |
fg %n | 將第 n 個在背景當中的工作移到前景來操作 |
bg %n | 將第 n 個在背景當中的工作變成執行中 |
額外 - The Ultimate vimrc
美化vim
讓vim
更賞心悅目!
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh
來自大佬: amix / vimrc
Vim 的另一選擇 Neovim
Neovim 是一個旨在積極重構 Vim 的項目,以便:
簡化維護並鼓勵貢獻
在多個開發人員之間拆分工作
在不修改核心的情況下啟用高級用戶界面
最大化可擴展性
有關詳細信息,請參閱介紹 wiki 頁面和路線圖。
安裝 Neovim
sudo apt install neovim -y
安裝外掛管理器 vim-plug
vim-plug
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Neovim 的組態檔案目錄
mkdir -p .config/nvim
Neovim 的組態檔案
vi .config/nvim/init.vim
Neovim 的組態檔案內容
call plug#begin()
" below are some vim plugin for demonstration purpose
Plug 'joshdick/onedark.vim'
Plug 'iCyMind/NeoSolarized'
Plug 'tpope/vim-commentary'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
call plug#end()
也可以新增更多個性化設定
" => Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Enable syntax highlighting
syntax enable
" Set colorscheme
set background=dark
colorscheme desert
" Set utf8 as standard encoding and en_US as the standard language
set encoding=utf8
" Use Unix as the standard file type
set ffs=unix,dos,mac
" Enable status bar color
set t_Co=256
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim Airline themes
let g:airline_theme='luna'
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled=1
" Vim Cpp Highlight
let g:cpp_class_scope_highlight=1
let g:cpp_member_variable_highlight=1
let g:cpp_experimental_simple_template_highlight=1
let g:cpp_concepts_highlight=1
重新打開 Neovim,然後執行
:PlugInstall
所有要安裝的外掛都會被安裝到目錄
一鍵安裝 Neovm 及 插件
這是安裝 Neovim 和 Vim-Plug 插件管理器的 Bash Script.
安裝一些流行的 Neovim 插件 (可根據自己喜好刪減):
vim-plugin
#!/bin/bash
# Program:
# Automatically install Neovim and vim-plug (basic).
# Author:
# King Tam (https://kingtam.win)
# History:
# Mar/22/2023 First release
# Define the required packages
packages=(curl git neovim)
# Define the package managers and their update commands
declare -A package_managers=(
[apt-get]="sudo apt-get"
[dnf]="sudo dnf"
[pacman]="sudo pacman -S"
)
# Detect the package manager and install the packages
for package_manager in "${!package_managers[@]}"
do
if command -v "$package_manager" &> /dev/null
then
${package_managers[$package_manager]}
sudo "$package_manager" install -y "${packages[@]}"
break
fi
done
# Check if the operating system is CentOS
if [ "$(awk -F= '/^ID=/{print $2}' /etc/os-release)" == "\"centos\"" ]; then
# Install Neovim and Python3-Neovim using YUM
echo "Detected CentOS Linux. Installing Neovim..."
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum update -y
sudo yum install -y neovim python3-neovim
fi
# Install Vim-Plug plugin manager
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# Create Neovim configuration file and add plugins
mkdir -p ~/.config/nvim
if [ ! -f ~/.config/nvim/init.vim ]; then
touch ~/.config/nvim/init.vim
fi
cat <<EOT >> ~/.config/nvim/init.vim
call plug#begin('~/.local/share/nvim/plugged')
" Add plugins here
Plug 'scrooloose/nerdtree'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'joshdick/onedark.vim'
Plug 'tpope/vim-commentary'
Plug 'octol/vim-cpp-enhanced-highlight'
call plug#end()
EOT
# Install plugins using Vim-Plug
nvim +PlugInstall +qall
在這個Script中:
- 使用
apt-get
包管理器安裝 Neovim。 然後我們安裝 Vim-Plug,這是 Vim 和 Neovim 的流行插件管理器。 創建一個 Neovim 配置文件 (
~/.config/nvim/init.vim
) 並向其中添加一些流行的插件。在這個例子中,我們添加了 NERDTree 文件瀏覽器、Airline 主題 和 Airline 狀態欄插件等等。
使用
nvim
命令通過 Vim-Plug 安裝插件。+PlugInstall
參數告訴 Neovim 安裝配置文件中定義的插件,+qall
參數告訴 Neovim 安裝完成後退出。
手動或者一鍵執行Neovim.sh腳本
- 將腳本的內容保存在文件中,例如 neovim.sh。
- 使用 chmod +x neovim.sh 使腳本可執行。
- 以 root 身份或使用 sudo 運行腳本:sudo ./neovim.sh。
此外,我們可以在終端中使用單個命令行。 (需要Root或者sudo權限)
curl -O https://kingtam.win/usr/uploads/script/neovim.sh && chmod +x neovim.sh && ./neovim.sh