成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡簡單單的 Vim 就很好

系統 Linux
用 Vim 還是 Neovim(Vim 的一個復刻)。這篇文章中的所有內容應該對兩者都適用。然而,我只用 Vim 測試過。當你登錄到一個只有 vi 可用的服務器時,所有的這些技能都會派上用場。它可以是一個舊的 UNIX 系統、一個安裝了最少的軟件以提高安全性的 Linux 服務器、一個容器中的交互式 shell,或者一個空間寶貴的嵌入式系統。


這就是我如何從 35 個 Vim 插件降到只有 6 個的原因。


當你用 ??—clean?? 選項啟動 Vim 時,它以 “素” 模式展示 Vim。沒有插件、沒有配置,一切回到了最初。多年來,我收集了一堆配置語句,其中一些可以追溯到 MS-DOS 或 Windows 3.1 時期。我是這樣打算的:從頭開始,只用 Fedora 35 中可用的插件,找到一個好的配置起點。我可以在一周的編碼生活中生存下來嗎?我會找到答案的!

規則是這樣的:盡可能少的配置語句,并且只使用 Fedora 35+ 中的插件。順便說一下,如果你不是 Fedora 用戶,也請繼續閱讀。你可以隨時從你的操作系統軟件包管理器手動安裝或者使用 Vim 插件管理器安裝這些插件。

在我開始之前,有一個大問題需要解決:用 Vim 還是 Neovim(Vim 的一個復刻)。好吧,這由你決定。這篇文章中的所有內容應該對兩者都適用。然而,我只用 Vim 測試過。當你登錄到一個只有 ??vi?? 可用的服務器時,所有的這些技能都會派上用場。它可以是一個舊的 UNIX 系統、一個安裝了最少的軟件以提高安全性的 Linux 服務器、一個容器中的交互式 shell,或者一個空間寶貴的嵌入式系統。

閑話少說,下面是我提煉出來的使用 Vim 進行編碼的絕對最低限度的東西:

# dnf install --allowerasing vim-default-editor \
        vim-enhanced \
        vim-ctrlp \
        vim-airline \
        vim-trailing-whitespace \
        vim-fugitive \
        vim-ale \
        ctags

不要擔心 ??—allowerasing?? 選項。在確認之前,只需查看一下安裝的東西。這個選項的作用是告訴軟件包管理器把現有的 ??nano-default-editor?? 包替換為 ??vim-default-editor??。這是一個小軟件包,它在 shell 配置文件中將 ??EDITOR?? 環境變量設置為 ??vim??,如果你想默認使用 Vim(例如,與 ??git?? 一起使用),這是必須的。這是專門針對 Fedora 的。你不需要在其他發行版或操作系統上這樣做,只要確保你的 ??EDITOR?? shell 變量被正確設置就行。

概覽

簡單介紹一下我認為好的、干凈的插件集:


  • CtrlP:盡可能小的模糊查找插件(純 vimscript)
  • Fugitive:一個 git 的必備工具
  • Trailing-whitespace:顯示并修復(刪除)尾部的空格
  • Airline:一個改進的狀態行(純 vimscript)
  • Ale:在你打字時高亮顯示錯別字或語法錯誤
  • Ctags:不是 Vim 插件,但卻是一個非常需要的工具

還有其他的模糊查找插件,如 command-t 或我最喜歡的 ??fzf.vim??(非常快)。問題是,??fzf.vim?? 不在 Fedora 中,而我想要盡可能少的配置。CtrlP 就可以了,而且配置它更容易,因為它不需要什么依賴。

如果讓我選擇一個絕對最小的配置,那就是:

# cat ~/.vimrc
let mapleader=","
let maplocalleader="_"
filetype plugin indent on
let g:ctrlp_map = '<leader><leader>'
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
set exrc
set secure

但這可能太極端了,所以這里是一個稍大的配置,下面是我的詳細解釋:

" vim: nowrap sw=2 sts=2 ts=2 et:

" leaders
let mapleader=","
let maplocalleader="_"

" filetype and intent
filetype plugin indent on

" incompatible plugins
if has('syntax') && has('eval')
packadd! matchit
end

" be SSD friendly (can be dangerous!)
"set directory=/tmp

" move backups away from projects
set backupdir=~/.vimbackup

" fuzzy searching
let g:ctrlp_map = '<leader><leader>'
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
nnoremap <leader>b :CtrlPBuffer<cr>
nnoremap <leader>t :CtrlPTag<cr>
nnoremap <leader>f :CtrlPBufTag<cr>
nnoremap <leader>q :CtrlPQuickfix<cr>
nnoremap <leader>m :CtrlPMRU<cr>

" buffers and quickfix
function! ToggleQuickFix()
if empty(filter(getwininfo(), 'v:val.quickfix'))
copen
else
cclose
endif
endfunction
nnoremap <leader>w :call ToggleQuickFix()<cr>
nnoremap <leader>d :bd<cr>

" searching ang grepping
nnoremap <leader>g :copen<cr>:Ggrep!<SPACE>
nnoremap K :Ggrep "\b<C-R><C-W>\b"<cr>:cw<cr>
nnoremap <leader>s :set hlsearch! hlsearch?<cr>

" ctags generation
nnoremap <leader>c :!ctags -R .<cr><cr>

" per-project configs
set exrc
set secure

使用逗號作為引導鍵

我喜歡把我的 ??引導鍵?? 映射成逗號 ??,??,而不是默認的反斜杠 ??\??。當你的手處于書寫位置時,它是 Vim 中最接近的自由鍵。另外,這個鍵在大多數鍵盤布局中都是一樣的,而 ??\?? 在每個型號或布局都不一樣。我很少使用 ??本地引導鍵??,但下劃線 ??_?? 看起來很合適。


文件類型和關閉語法高亮

接下來是非常重要的 ??filetype?? 命令。看,Vim 自帶“內置電池”,8.2 版本包含 644 種語言的語法高亮,251 個文件類型定義(??ftplugins??),以及 138 種語言的縮進規則。然而,縮進在默認情況下是不啟用的,也許是為了給所有人提供一個一致的編輯體驗。我喜歡啟用它。

一個簡單的技巧:如果你正在編輯一個非常大的文件,并且 Vim 感覺很慢,你可能想禁用語法高亮來加快速度。只要輸入 ??:syn off?? 命令即可。


Matchit 插件

Vim 甚至額外帶有使得一些功能不兼容的插件,其中一個相當有用。它就是 ??matchit?? 插件,它使按下 ??%?? 鍵可以在某些語言中查找匹配的括號。通常情況下,你可以找到一個塊的開始或結束(開始和結束括號)或 HTML 匹配標簽及類似的。


交換文件

我想從我的舊配置中保留的許多設置之一是使用 ??/tmp?? 進行交換,并在我的家目錄的一個單獨目錄中創建備份,你需要用 ??mkdir ~/.vimbackup?? 來創建這個目錄。重要的是要明白,當你開始編輯時,Vim 會創建一個名為 “交換文件” 的副本,所有未保存的工作都會保存在這個文件中。所以即使停電了,你的交換文件也包含了大部分未保存的工作。我更喜歡使用 ??tmpfs??,因為我所有的筆記本電腦和服務器都有 UPS 保護,而且我經常保存。另外,大多數情況下,你會使用到交換文件是當你的 SSH 連接丟失而不是由于停電時。對于大文件來說,交換文件可能相當大,我很珍視我的固態硬盤,所以我決定這樣做。如果你不確定,可以刪除這句話,使用 ??/var/tmp??,這樣更安全。


模糊尋找插件

現在,模糊查找是一個我不能沒有的插件。在服務器上當你每天需要打開 20 個文件時,使用 ??:Ex?? 或 ??:e?? 或 ??:tabe?? 等命令打開文件是沒問題的。而當編碼時,我通常需要打開數百個文件。正如我所說,CtrlP 很好地完成了這項工作。它很小,沒有依賴性,純 Vim。它用 ??Ctrl + P?? 組合鍵打開,這對我來說有點奇怪。我知道一些著名的編輯器(我記得是 VSCode)使用這個組合鍵。問題是,這已經是很重要的 Vim 綁定鍵,我不想覆蓋它。所以對我來說,贏家是 ??引導鍵 + 引導鍵??(逗號按兩次)。

??ctrlp_user_command?? 只是改變了 CtrlP 獲取文件列表的方式。它不使用內置的遞歸文件列表(glob),而是使用 ??git ls-files??,這通常更好,因為它忽略了 ??.gitignore?? 中的東西,所以像 ??node_modules?? 或其他可能拖慢列表的不相關目錄不會受到影響。

使用 ??引導鍵?? + ??B??/??T??/??F??/??Q??/??M?? 來打開緩沖區、標簽、當前文件的標簽、快速修復緩沖區和最近使用的文件的列表,非常有用。具體來說,一旦你用 ??ctags?? 生成了標簽列表,這基本上就是數百種編程語言的“去……定義處”,而且不需要插件!這都是 Vim 內置的。現在澄清一下,當我說輸入 ??引導鍵 + B?? 時,是指按下逗號,然后按 ??B?? 鍵,而不是像用 ??Control?? 或 ??Shift?? 那樣一起按。


緩沖區管理

雖然現在 Vim 支持標簽,但緩沖區管理是掌握 Vim 的一個重要技能。我通常會有很多緩沖區,我需要經常做 ??:bdelete??。那么,??引導鍵 + D?? 似乎是一個不錯的選擇,可以更快地完成這個任務。我也喜歡關閉 Quickfix 窗口,所以也有 ??引導鍵 + W?? 的組合鍵,我在瀏覽搜索結果時經常使用這個功能。


Ggrep 和 fugitive 插件

說到搜索,它和打開文件一樣重要。我希望能夠對代碼庫進行檢索。為此,有一個來自 fugitive 插件的很棒的 ??:Ggrep?? 命令,它使用 ??git grep??,忽略了垃圾文件,只搜索 Git 中的內容。由于 ??Shift + K?? 是 Vim 中的一個自由鍵,它非常適用于自動檢索光標位置的詞語。最后,能夠使用 ??引導鍵 + G?? 輸入任意的搜索模式也很好。注意,這將打開一個叫做 Quickfix 的窗口,你可以在這里瀏覽結果、查看下一個/上一個/最后一個/第一個出現的地方,等等。這個窗口也用于編譯器或其他工具的輸出,所以要熟悉它。如果你對此感到陌生,我建議進一步閱讀文檔。


用 fugitive 進行搜索、檢索

順便說一下,用 ??/?? 鍵搜索是智能和大小寫敏感的,這意味著如果所有的搜索字符都是小寫的,Vim 的搜索會忽略大小寫。默認情況下,它會高亮顯示結果,我覺得我已經敲了無數次的 ??:noh??(來關閉高亮顯示)。這就是為什么我有 ??引導鍵 + S?? 來切換高亮顯示。我建議以后也多讀讀手冊中關于搜索的內容。

接下來是搜索、檢索。fugitive 插件已經為你提供了。使用命令 ??:Ggrep pattern?? 來進行 ??git grep??,結果會進入 Quickfix 窗口。然后簡單地使用快速修復命令(??:cn??、??:cp?? 等等)瀏覽結果,或者簡單地使用 ??:CtrlPQuickfix??(??引導鍵 + Q??)來直觀地滾動它們。CtrlP 的快速修復整合的酷炫之處是,你可以通過輸入以匹配文件名或內容來進一步在搜索結果中搜索。


Ctags

??引導鍵 + C?? 可以生成一個 ctags 文件,以便更好地導航,這在處理一個新的代碼庫或做一個有很多跳轉的較長的編碼任務時很有用。ctags 支持數百種語言,而 Vim 可以利用所有這些知識來導航。后面會有更多關于如何配置它的內容。注意我已經討論過 ??引導鍵 + T?? 來打開所有標簽的模糊搜索,記得嗎?這兩個是非常相同的。


按鍵映射

能夠通過在項目目錄下創建一個 ??.vimrc?? 文件來覆蓋該項目中的任何設置是一個好主意。只要把它放在(全局的) ??.gitignore?? 中,以確保你不需要在每個項目中編輯成千上萬的 ??.gitignore?? 文件。這樣的一個項目的 ??.vimrc?? 可以是這樣的(對于使用 GNU Makefile 的 C/C++ 項目):

" coding style
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
" include and autocomplete path
let &path.="/usr/local/include"
" function keys to build and run the project
nnoremap <F9> :wall!<cr>:make!<cr><cr>
nnoremap <F10> :!LD_LIBRARY_PATH=/usr/local/lib ./project<cr><cr>

正如你所看到的,我通常將 ??F2?? 到 ??F10?? 等鍵映射到編譯、運行、測試和類似的操作。用 ??F9?? 來調用 ??make??,聽起來不錯。還記得 MS-DOS 上的藍色 Borland IDE 嗎?

如前所述,在全局范圍內忽略 ??.vimrc?? 和(由 ??ctags?? 生成的)??tags?? 是個好主意,所以不需要每次都更新 ??.gitignore??:

# git config --global core.excludesfile ~/.gitignore
# cat ~/.gitignore
/.vimrc
/tags
/TAGS

在我的個人配置中還有幾條只與那些非美國鍵盤布局的人有關(我用捷克語)。我需要用“死鍵”來輸入許多字符(LCTT 譯注:“死鍵”是一種通過將變音符號與后面的字母結合起來打出重音字符的方法。這種方法在歷史上被用于機械打字機),這根本不可能,我寧愿輸入命令而不是按那些難以按下的組合鍵。這里有一個解決問題的辦法:

" CTRL-] is hard on my keyboard layout
map <C-K> <C-]>
" CTRL-^ is hard on my keyboard layout
nnoremap <F1> :b#<cr>
nnoremap <F2> :bp<cr>
nnoremap <F3> :bn<cr>
" I hate entering Ex mode by accident
map Q <Nop>

功能鍵在 Vim 中都是自由的,除了 ??F1??,它被綁定在幫助上。我不需要幫助,并不是說我已經會對 Vim 了如指掌,并不是。但如果需要的話,我可以簡單地輸入 ??:help??。而 ??F1?? 是一個關鍵的鍵,離 ??Esc?? 鍵如此之近。我喜歡將它用于緩沖區交換(??:b#??),將 ??F2??/??F3?? 用作下一個/上一個。你越是與緩沖區打交道,你就越需要這個。如果你沒有使用過 ??Ctrl + ^??,我建議你要習慣于它。哦,你有沒有丑陋地輸入 ??:visual?? 進入過 Ex 模式?許多初學者都不知道如何從該模式下退出 Vim。對我來說,這就是打擾,因為我很少使用它。

現在,熟悉 ??ctags?? 是成功使用 Vim 的一個關鍵因素。這個工具支持數百種語言,它不小心就為你不想創建標簽的文件創建它,因此我建議忽略典型的垃圾目錄:

# cat ~/.ctags.d/local.ctags
--recurse=yes
--exclude=.git
--exclude=build/
--exclude=.svn
--exclude=vendor/*
--exclude=node_modules/*
--exclude=public/webpack/*
--exclude=db/*
--exclude=log/*
--exclude=test/*
--exclude=tests/*
--exclude=\*.min.\*
--exclude=\*.swp
--exclude=\*.bak
--exclude=\*.pyc
--exclude=\*.class
--exclude=\*.cache

Airline 插件

我一定不能忘記 Vim 的 Airline 插件。在 Fedora 的兩個插件中,這個插件很輕量級,不需要外部依賴,而且可以開箱即用我所有的字體。你可以定制它,而且還有主題之類的東西。我只是碰巧喜歡它的默認設置。

我必須提到,有兩個主要的 Ctags 項目:Exuberant Ctags 和 Universal Ctags。后者是一個更現代的復刻。如果你的發行版有,就用它。如果你在 Fedora 35+ 上,你應該知道你現在用的是 Universal Ctags。

總結

作為總結,我的建議是這樣的。盡量保持你的 Vim 配置流暢和干凈。這將在未來得到回報。在我轉換到新配置之后,我不得不重新學習“寫入并退出”的命令,因為我總是不小心把它打成 ??:Wq??,而我在舊的配置里有一個“小技巧”,讓它實際上按我的意思工作。好吧,這個可能真的很有用,并能入選,我希望你能明白我的意思:

:command Wq wq
:command WQ wq

最后的一個快速技巧是:你可能需要經常改變你的默認 Vim 配置,來找到我在這里向你介紹的和你自己口味之間的舒適區。使用下面的別名,這樣你就不需要一直搜索歷史。相信我,當一個 Vim 用戶在命令歷史里搜索 “vim” 時,找不到什么是相關的內容:

alias vim-vimrc='vim ~/.vimrc'

就是這些了。也許這可以幫助你在沒有大量插件的情況下在 Vim 的豐富世界遨游。“簡簡單單” 的 Vim 也很不錯!

要嘗試你剛剛讀到的內容,請安裝軟件包并檢出這些配置:

test -f ~/.vimrc && mv ~/.vimrc ~/.vimrc.backup
curl -s https://raw.githubusercontent.com/lzap/vim-lzap/master/.vimrc -o ~/.vimrc
mkdir ~/.vimbackup

特別感謝 Marc Deop 和 Melanie Corr 對本文的審閱。

更新

我已經在這種配置下生存下來了!我唯一的糾結是 CtrlP 插件的結果順序不同。文件的模糊算法與 ??fzf.vim?? 插件不同,所以我以前用各種搜索詞能找到的文件現在找不到了。我最后安裝了 Fedora 的 fzf 包以獲得更相關的文件搜索,它附帶了一個 vim 函數 ??FZF??,可以綁定到引導鍵組合上。請看我的 GitHub 倉庫 中更新后的配置文件。一路走來,我學到了很多東西。有一些鍵的綁定我已經忘記了,這要感謝許多插件。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2009-09-17 08:47:00

Linq查詢

2010-07-28 16:14:53

2010-07-26 16:21:13

Telnet端口

2009-11-18 16:58:55

PHP命名規則

2009-11-17 16:32:54

PHP對象序列化

2022-04-01 16:00:54

芯片人工智能

2021-04-07 13:43:07

PythonDash數據庫

2017-06-14 17:42:14

YunOS互聯網汽車上網

2021-08-23 06:27:46

AndroidctivitysetContentV

2021-04-14 10:47:56

瀏覽器網址TCP

2020-12-25 19:31:05

VR實景導航大型商場

2013-07-18 14:07:05

App運行時iPhoniOS開發

2013-04-09 10:53:40

Windows BluWin 8

2022-03-05 23:15:38

大數據數據分析互聯網

2009-09-16 17:11:35

LINQ To SQL

2012-07-20 09:51:56

贊揚管理藝術管理

2016-02-04 09:17:59

2011-08-11 16:44:46

網康ITM視頻會議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久国产精品免费免费狐狸 | 亚洲成人日韩 | 欧美视频精品 | 亚洲精品一区二区网址 | 国产在线视频一区二区董小宛性色 | 国产1区2区3区 | 欧美性一区二区三区 | 精品免费av| 黄久久久 | 亚洲国产精品va在线看黑人 | 一区二区三区日韩 | 亚洲一区二区精品视频在线观看 | 亚洲国产精品99久久久久久久久 | 亚洲欧洲成人av每日更新 | 免费看的av| 精品一区二区在线看 | 午夜久久久久久久久久一区二区 | 日本精品久久久久久久 | 中文字幕一区二区三区四区五区 | 亚洲性人人天天夜夜摸 | 韩日在线观看视频 | 久久大陆 | 久草影视在线 | 久久免费国产视频 | 免费a网| 日韩在线精品视频 | 国产精品久久久久久亚洲调教 | 久久久久久中文字幕 | 欧美日韩久久精品 | 国产91视频一区二区 | www.国产精| 亚洲天堂网站 | 国产欧美精品 | 日韩有码在线观看 | 中文字幕丁香5月 | 一区二区在线观看免费视频 | 神马久久春色视频 | 91九色porny首页最多播放 | 欧美日韩亚洲视频 | 深夜福利亚洲 | 99久久99久久精品国产片果冰 |