This articles is published 1413 days ago and last updated 777 days ago, some information may be out of date.
Linux 的命令基本用法 - vim 編輯器
Vimlogo.png
前言: nano
是簡單好用的文件編輯器,但熟練vim
後會讓你在編輯處理上更得心應手。
大部份內容取自鳥哥的 vim 程式編輯器 教學
vim編輯器三種模式:
centos7_vi-mode.gif
如圖示(來自鳥哥 ) ESC
是退回到一般模式
,編輯模式
、命令模式
切換都要經一般模式才可以。
2020-06-23_112920.png
[[h]] 或 向左方向鍵(←) 游標向左移動一個字元 [[j]] 或 向下方向鍵(↓) 游標向下移動一個字元 [[k]] 或 向上方向鍵(↑) 游標向上移動一個字元 [[l]] 或 向右方向鍵(→) 游標向右移動一個字元
如向下移動 20 列,可以使用 "20j" 或 "20↓" 的組合按鍵即可!
2020-06-23_150634.png
[[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
或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]] 退出編輯模式(回到一般模式)
返回
:w
將編輯的資料寫入硬碟檔案中 :q
離開 vi :wq
儲存後離開,若為 :wq! 則為強制儲存後離開 :set nu
顯示行號,設定之後,會在每一列的字首顯示該列的行號 :set nonu
與 set nu 相反,為取消行號! :! command
暫時離開 vim 執行 command 的顯示結果!
返回
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
2021-07-08_091111.png
來自大佬: amix / vimrc
Vim 的另一選擇 Neovim Neovim 是一個旨在積極重構 Vim 的項目,以便: 簡化維護並鼓勵貢獻 在多個開發人員之間拆分工作 在不修改核心的情況下啟用高級用戶界面 最大化可擴展性 有關詳細信息,請參閱介紹 wiki 頁面和路線圖。 neovim
安裝 Neovim
sudo apt install neovim -y
安裝外掛管理器 vim-plugvim-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
" 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
也可以新增更多個性化設定
" => 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
" 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
packages = ( curl git neovim)
declare -A package_managers = (
[ apt-get] = "sudo apt-get"
[ dnf] = "sudo dnf"
[ pacman] = "sudo pacman -S"
)
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
if [ "$( awk -F= '/^ID=/{print $2 }' /etc/os-release) " == "\" centos\" " ] ; then
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
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
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
" 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
EOT
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
此命令將從 URL地址下載腳本,使其可執行,然後運行它。 如果任何命令失敗,則不會執行後續命令。 參考資料: Vim Cheat Sheet
鳥哥私房菜 - 檔案管理與 vim 初探
junegunn / vim-plug
我的 Vim 配置