Ubuntu 18.04中的Vim編輯器的高級配置

来源:https://www.cnblogs.com/leime/archive/2018/08/02/9406505.html
-Advertisement-
Play Games

VIM (Unix及類Unix系統文本編輯器) Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是開源軟體。 Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworl ...


VIM (Unix及類Unix系統文本編輯器)

  Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是開源軟體。

Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是非常優秀的。

前言:

  系統原生的Vim文本編輯器功能單一,作者介紹一種K-vim高級配置,具有代碼補全等多項功能。本文是在原作者的基礎上進行二次改進,原文地址:https://github.com/wklken/k-vim。

正文:

 

安裝步驟

註意:有些系統需要執行:sudo apt-get install vim  #安裝Vim編輯器後才能進行安裝

1. clone 到本地

git clone https://github.com/wklken/k-vim.git

註意:如果未安裝git,需要執行:sudo apt-get install git  #安裝git後才能進行安裝,下載目錄就是當前目錄。

2. 安裝依賴包

2.1 系統依賴 # ctags, ag(the_silver_searcher)
# ubuntu
sudo apt-get install ctags
sudo apt-get install build-essential cmake python-dev  #編譯YCM自動補全插件依賴
sudo apt-get install silversearcher-ag

# centos
sudo yum install python-devel.x86_64
sudo yum groupinstall 'Development Tools'
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install the_silver_searcher
sudo yum install cmake

# mac
brew install ctags
brew install the_silver_searcher
2.2 使用Python
sudo pip install flake8 yapf

註意:執行上面命令需要提前安裝pip支持:

sudo apt-get update  

sudo apt-get upgrade

#  安裝Pip

sudo apt-get install python-pip

# 檢查 pip 是否安裝成功 

pip -V

2.3 如果使用Javascript(不需要的跳過)
# 安裝jshint和jslint,用於javascript語法檢查
# 需要nodejs支持,各個系統安裝見文檔 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

# ubuntu
sudo apt-get install nodejs npm
sudo npm install -g jslint
sudo npm install jshint -g
sudo npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint

# mac
brew install node
npm install jshint -g
npm install jslint -g
npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint

3. 安裝

進入目錄, 執行安裝
# 註意原先裝過的童鞋, 重裝時,不要到~/.vim下執行(這是軟連接指向k-vim真是目錄),必須到k-vim原生目錄執行
# 會進入安裝插件的列表,一安裝是從github clone的,完全取決於網速, 之後會自動編譯 YCM, 編譯失敗的話需要手動編譯, 有問題見YCM文檔
# 如果發現有插件安裝失敗 可以進入vim, 執行`:PlugInstall'

cd k-vim/
sh -x install.sh
註意:執行安裝時,如果已經將官方源換為國內源,需要改回官方源才能正常安裝,否則會卡住不動,導致安裝失敗。
 


移除安裝

執行命令:cd ~ && rm -rf .vim .vimrc .vimrc.bundles && cd -

檢驗安裝

執行:vi hello.c
按“i”進入編輯模式,輸入#include等函數將會出現自動補齊選項,按回車鍵選中。

 

註意:如果沒有設定文件名,例如XX.c,將不會出現文件補齊,很容易理解。

 


插件


選擇安裝插件集合


編輯vimrc.bundles中


" more options: ['json', 'nginx', 'golang', 'ruby', 'less', 'json', ]
let g:bundle_groups=['python', 'javascript', 'markdown', 'html', 'css', 'tmux', 'beta']

選定集合後, 使用插件管理工具進行安裝/更新


插件管理


使用 vim-plug 管理插件


vim-plug 常見問題: vim-plug faq / YCM timeout /YCM 國人在國內做的鏡像


管理插件的命令


:PlugInstall     install                      安裝插件
:PlugUpdate      install or update            更新插件
:PlugClean       remove plugin not in list    刪除本地無用插件
:PlugUpgrade     Upgrade vim-plug itself      升級本身
:PlugStatus      Check the status of plugins  查看插件狀態

插件列表


說明/演示/自定義快捷鍵等, 待處理






自定義快捷鍵


註意, 以下 ',' 代表<leader>
1. 可以自己修改vimrc中配置,決定是否開啟滑鼠

set mouse-=a           " 滑鼠暫不啟用, 鍵盤黨....
set mouse=a            " 開啟滑鼠

2. 退出vim後,內容顯示在終端屏幕, 可以用於查看和複製, 如果不需要可以關掉
    好處:誤刪什麼的,如果以前屏幕打開,可以找回....慘痛的經歷

set t_ti= t_te=

3. 可以自己修改vimrc決定是否使用方向鍵進行上下左右移動,預設關閉,強迫自己用 hjkl,可以註解
hjkl  上下左右

map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>

4. 上排F功能鍵

F1 廢棄這個鍵,防止調出系統幫助
F2 set nu/nonu,行號開關,用於滑鼠複製代碼用
F3 set list/nolist,顯示可列印字元開關
F4 set wrap/nowrap,換行開關
F5 set paste/nopaste,粘貼模式paste_mode開關,用於有格式的代碼粘貼
F6 syntax on/off,語法開關,關閉語法可以加快大文件的展示

F9 tagbar
F10 運行當前文件(quickrun)

5. 分屏移動

ctrl + j/k/h/l   進行上下左右視窗跳轉,不需要ctrl+w+jkhl

6. 搜索
<space> 空格,進入搜索狀態
/       同上
,/      去除匹配高亮

(交換了#/* 號鍵功能, 更符合直覺, 其實是離左手更近)
#       正向查找游標下的詞
*       反向查找游標下的詞

優化搜索保證結果在屏幕中間

7. tab操作
ctrl+t 新建一個tab

(hjkl)
,th    切第1個tab
,tl    切最後一個tab
,tj    下一個tab
,tk    前一個tab

,tn    下一個tab(next)
,tp    前一個tab(previous)

,td    關閉tab
,te    tabedit
,tm    tabm

,1     切第1個tab
,2     切第2個tab
...
,9     切第9個tab
,0     切最後一個tab

,tt 最近使用兩個tab之間切換
(可修改配置位 ctrl+o,  但是ctrl+o/i為系統游標相關快捷鍵, 故不採用)

8. buffer操作(不建議, 建議使用ctrlspace插件來操作)
[b    前一個buffer
]b    後一個buffer
<-    前一個buffer
->    後一個buffer


9. 按鍵修改
Y         =y$   複製到行尾
U         =Ctrl-r
,sa       select all,全選
gv        選中並高亮最後一次插入的內容
,v        選中段落
kj        代替<Esc>,不用到角落去按esc了

,q     :q,退出vim
,w     :w, 保存當前文件

ctrl+n    相對/絕對行號切換
<enter>   normal模式下回車選中當前項

更多細節優化:
    1. j/k 對於換行展示移動更友好
    2. HL 修改成 ^$, 更方便在同行移動
    3. ; 修改成 : ,一鍵進入命令行模式,不需要按shift
    4. 命令行模式 ctrl+a/e 到開始結尾
    5. <和> 代碼縮進後自動再次選中, 方便連續多次縮進, esc退出
    6. 對py文件,保存自動去行尾空白,打開自動加行首代碼
    7. 'w!!'強制保存, 即使readonly
    8. 去掉錯誤輸入提示
    9. 交換\`和', '能跳轉到準確行列位置
    10. python/ruby 等, 保存時自動去行尾空白
    11. 統一所有分屏打開的操作位v/s[nerdtree/ctrlspace] (特殊ctrlp ctrl+v/x)
    12. ',zz' 代碼摺疊toggle
    13. python使用"""添加docstring會自動補全三引號
    14. Python使用#進行註釋時, 自動縮進

 


 

 

 

 


 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、SNAT:源地址轉換 實現內網訪問外網,修改IP地址,使用POSTROUTING 命令:iptables -t nat -A POSTROUTING -s 192.168.1.10/24 -j SNAT --to-source 202.1.1.1 2、MASQUERADE:地址偽裝 適用於外網i ...
  • ssh-keygen介紹 維基百科上關於ssh-keygen的介紹如下: ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix and Unix-like computer ... ...
  • 一、網路協議 國際標準化組織(ISO)定義了網路協議的基本框架,被稱為OSI模型。OSI模型包括應用層、表示層、會話層、傳輸層、網路層、數據鏈路層及物理層。而OSI模型過於複雜至今沒有得到實際的應用。 TCP/IP協議模型將OSI的7層協議模型簡化為4層,從而更有利於實現和使用。TCP/IP協議模型 ...
  • 替換 替換某一整行 str1替換為str2 將含有xhn的行中的str1替換為str2 將1-5行替換為兩行: hello world 刪除 刪除空行 ...
  • 如何設置非管理員用 戶配置特定的IIS站點 一、 添加IIS管理服務 二、 啟動管理服務 勾選啟用遠程連接後。點右邊的應用 三、 設置站點許可權 添加一個windows標準用戶 四、 標準用戶訪問 輸入伺服器名稱和站點名稱 ...
  • LNMP就是Linux+Nginx+MySQL+PHP,既然是在Linux CentOS7那麼Linux就是已經安裝好了。所以接下百度一下接下來的教程,整理測試如下: 教程是centos6.2的有點老,將就著看看,教程:https://www.linuxidc.com/Linux/2012-09/7 ...
  • 1. MBR故障修複 備份 mkdir /pp mount /dev/sdb1 /pp dd if=/dev/sda of=/pp/mrb.bak bs=512 count=1 破壞mrb dd if=/dev/zero of=/dev/sda bs=512 count=1 reboot 重啟後鏡像 ...
  • 簡介: 組織單位簡稱OU,OU是(Organizational Unit)的縮寫,組織單位是可以將用戶、組、電腦和組織單位放入其中的容器。是可以指派組策略設置或委派管理許可權的最小作用域或單元。 建立步驟 一、組織單位的創建 1)打開伺服器管理器,點 工具》Active Directory用戶和計算 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...