GNU/Linux >> Linux の 問題 >  >> Linux

バニラヴィムは楽しいです

--cleanでVimを起動する場合 オプションの場合、「バニラ」モードで表示されます。プラグインも設定もありません。ルーツに戻るだけです。私は何年にもわたって大量の構成ステートメントを収集してきましたが、そのうちのいくつかはMS-DOSまたはWindows3.1からのものです。これが取引です。Fedora35で利用可能なプラグインだけを使用して、適切な開始点構成を見つけるためにゼロから始めます。1週間のコーディングに耐えることができますか?わかります!

ルールは次のとおりです。最小限の構成ステートメントと、Fedora35以降に同梱されているプラ​​グインのみ。ちなみに、Fedoraユーザーでない場合は、読み続けてください。これらのプラグインは、OSパッケージマネージャーから手動で、またはVimプラグインマネージャーを使用していつでもインストールできます。

始める前に、部屋に象がいます:VimまたはNeovim(Vimのフォーク)の質問。さて、これはあなた次第です。この記事にあるものはすべて、両方で機能するはずです。ただし、Vimでのみテストしました。 viのみのサーバーにログオンすると、すべてのスキルが役立ちます。 利用可能です。古いUNIXシステム、セキュリティを強化するために最小限のソフトウェアがインストールされたLinuxサーバー、コンテナ内のインタラクティブシェル、またはスペースが貴重な組み込みシステムのいずれかです。

余計な手間をかけずに、コーディングのために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を使用 。これは、シェル構成ファイルをドロップしてEDITOR環境変数をvimに設定する小さなパッケージです。 、これは、Vimを使用する場合(たとえば、gitで)に必須です。これはFedoraにとって特別なことです。他のディストリビューションやOSではこれを行う必要はありません。EDITORシェル変数が正しく設定されていることを確認してください。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

概要

優れたクリーンなプラグインセットと私が考えるものの概要:

  • CtrlP :可能な限り最小のあいまい検索プラグイン(純粋なvimscript)
  • 逃亡者 :gitの必須ツール
  • トレーリング-空白 :末尾の空白を表示して修正します
  • 航空会社 :改善されたステータスライン(純粋なvimscript)
  • エール :入力時にタイプミスまたは構文エラーを強調表示します
  • タグ :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で最も近いフリーキーです。また、このキーはほとんどのキーボードレイアウトで同じですが、\ モデルやレイアウトによって異なります。地元のリーダーを使うことはめったにありませんが、アンダースコアはぴったりのようです。

さらに読む:

  • :help map-which-keysを参照してください Vimリファレンスマニュアル
  • VimのヒントWikiでVimの未使用のキーを参照してください

ファイルタイプと構文オフ

次は非常に重要なfiletypeです 指図。ほら、Vimには「バッテリーが含まれています」バージョン8.2には、644言語、251ファイルタイプ定義(ftpluginsの構文強調表示)が含まれています。 )、および138言語のインデント規則。ただし、インデントはデフォルトでは有効になっていません。おそらく、すべての人に一貫した編集エクスペリエンスを提供するためです。有効にするのが好きです。

簡単なヒント:非常に大きなファイルを編集していて、Vimが遅いと感じる場合は、構文の強調表示を無効にして速度を上げることができます。 :syn offと入力するだけです コマンド。

さらに読む:

  • :help filetypeを参照してください Vimリファレンスマニュアル
  • :help syntaxを参照してください Vimリファレンスマニュアル
  • :help indentを参照してください Vimリファレンスマニュアル

Matchitプラグイン

Vimにはいくつかの追加のプラグインが付属しているため、一部の機能に互換性がありません。これらの1つは非常に便利です。 matchitです %を作成するプラグイン 一部の言語で機能する一致する親を見つけることが重要です。通常、ブロックの開始または終了(開始と終了)またはHTML一致タグなどを見つけることができます。

さらに読む:

  • :help matchitを参照してください Vimリファレンスマニュアル

スワップファイル

古い設定から保持したい多くの設定の1つは、/tmpを使用することです。 スワップして、自宅の別のディレクトリにバックアップを作成します。これは、mkdir ~/.vimbackupで作成する必要があります。 。編集を開始すると、Vimが「スワップファイル」と呼ばれるコピーを作成し、保存されていないすべての作業がこのファイルに保存されることを理解することが重要です。したがって、停電が発生した場合でも、スワップには保存されていない作業のほとんどが含まれます。 tmpfsを使用することを好みます すべてのラップトップとサーバーがUPSで保護されているため、頻繁に保存します。また、ほとんどの場合、停電ではなくSSH接続が失われたときにスワップファイルを使用します。スワップファイルは大きなファイルの場合はかなり大きくなる可能性があり、SSDを重視しているため、ここで決定します。不明な場合は、このステートメントを削除して/var/tmpを使用してください 、より安全です。

さらに読む:

  • :help swap-fileを参照してください Vimリファレンスマニュアル

あいまい検索プラグイン

さて、あいまい検索ツールは私がなくてはならないプラグインです。 :Exなどのコマンドを使用してファイルを開く または:e または:tabe 1日に20個のファイルを開く必要がある場合は、サーバー上で問題ありません。コーディングするとき、私は通常何百ものそれらを開く必要があります。私が言ったように、CtrlPはうまく機能します。小さく、依存関係はありません。純粋なVimです。 Ctrlで開きます + P 組み合わせ、それは私には少し奇妙です。有名な編集者の中にはそれを使用している人がいることを私は知っています(VSCodeだと思います)。重要なのは、これらは私がオーバーライドしたくない重要なVimキーバインディングです。ですから、私にとっての勝者はリーダーです。 +リーダー (カンマが2回押されました)。

ctrlp_user_command CtrlPがファイルリストを取得する方法を変更するだけです。組み込みの再帰ファイルリスター(glob)の代わりに、git ls-filesを使用します これは通常、.gitignoreからのものを無視するのでより良いです 、つまりnode_modules または、リストの速度を低下させる可能性のあるその他の無関係なディレクトリは邪魔になりません。

リーダー + B / T / F / Q / M バッファ、タグ、現在のファイルからのタグ、クイックフィックスバッファ、および最近使用したファイルのリストを開くと非常に便利です。具体的には、taglistを生成したら ctagsを使用 、これは本質的に何百ものプログラミング言語の「定義に移動」です。プラグインは必要ありません。これはすべてVimに組み込まれています。簡単に言うと、リーダーと入力すると + B 、カンマを押してから Bを押すことを意味します キー、コントロールのように一緒ではありません またはシフト

さらに読む:

  • :help Exploreを参照してください Vimリファレンスマニュアル
  • ctrlp.vimGitHubを参照してください

バッファ管理

最近Vimはタブをサポートしていますが、バッファー管理はVimをマスターするための重要なスキルです。通常、バッファが多すぎて、:bdeleteを実行する必要があります。 あまりにも頻繁に。ええと、リーダー + D それをより速く行うための良いオプションのようです。また、Quickfixウィンドウを閉じるのが好きなので、リーダーがいます。 + W そのための組み合わせも。これは、検索結果を閲覧するときによく使用します。

さらに読む:

  • :help buffer-hiddenを参照してください Vimリファレンスマニュアル

Ggrepと逃亡プラグイン

検索について言えば、ファイルを開くことと同じくらい重要です。コードベースをgrepできるようにしたい。そのために、素晴らしい:Ggrepがあります ジャンクファイルを無視し、gitにあるものだけを検索するgitgrepを使用するfugitiveプラグインからのコマンド。 シフト以降 + K はVimのフリーキーで、カーソルの下の用語を自動的に表示するのに最適です。そして最後に、リーダーを使用して任意の検索パターンを入力できるようになります + G またいいです。これにより、Quickfixウィンドウと呼ばれるウィンドウが開き、結果をナビゲートしたり、次のオカレンス、前、最後、最初などに移動したりできることに注意してください。コンパイラや他のツールからの出力にも同じウィンドウが使用されるので、よく理解してください。これが初めての場合は、ドキュメントをさらに読むことをお勧めします。

さらに読む:

  • :help quickfixを参照してください Vimリファレンスマニュアル
  • vim-fugitiveGitHubを参照してください

逃亡者を探して捕まえる

ちなみに、/で検索 キーはスマートで機密性が高く、すべての文字が小文字の場合、Vimは大文字と小文字を無視して検索します。デフォルトでは結果が強調表示され、:nohと入力したと思います (ハイライトの順番)約100万回。だから私にはリーダーがいます + S これを切り替えます。後でマニュアルで検索についても読むことをお勧めします。

次は検索とgreppingです。逃亡プラグインはあなたをカバーしました。コマンド:Ggrep patternを使用します git grepを実行すると、結果がQuickfixウィンドウに表示されます。次に、クイック修正コマンド(:cn)を使用して結果をナビゲートします。 、:cp 、など)または単に:CtrlPQuickfixを使用します (またはリーダー + Q )視覚的にスクロールします。 CtrlPクイックフィックス統合の優れている点は、ファイル名またはコンテンツに一致するように入力することで、結果をさらに検索できることです。つまり、検索結果を検索します。

さらに読む:

  • :help grepを参照してください Vimリファレンスマニュアル
  • :help nohを参照してください Vimリファレンスマニュアル
  • vim-fugitiveGitHubを参照してください

Ctags

リーダー + C ctagsを生成するには より良いナビゲーションのためのファイルは、新しいコードベースを処理するとき、または多くのジャンプを伴うより長いコーディングセッションを実行するときに役立ちます。 Ctagsは何百もの言語をサポートしており、Vimはこのすべての知識を使用してナビゲートできます。後で構成する方法の詳細。すでにリーダーについて話し合ったことに注意してください + T すべてのタグのあいまい検索を開くには、覚えていますか?まったく同じことです。

さらに読む:

  • :help ctagsを参照してください Vimリファレンスマニュアル
  • UniversalCtagsのウェブサイトをご覧ください

キーマッピング

.vimrcを作成することで、プロジェクトの他の設定を上書きできるようになります プロジェクトディレクトリ内のファイルは良い考えです。 (グローバル).gitignoreに入れるだけです 各プロジェクトで何千ものgitignoreファイルを編集する必要がないことを確認します。そのようなプロジェクト.vimrc (GNUMakefileを使用した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の青いBorlandIDEを覚えていますか?

前述のように、.vimrcの両方を無視することをお勧めします。 およびtagsctagsによって生成されます )グローバルに、各.gitignoreごとに更新する必要はありません :

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

私の個人設定のいくつかのステートメントは、米国以外のキーボードレイアウトを持つものにのみ関連しています(私はチェコ語を使用しています)。多くの文字にデッドキーを使用する必要がありますが、それは不可能です。到達しにくい組み合わせを実行する代わりに、コマンドを入力したいと思います。この問題の解決策は次のとおりです。

" 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>

さらに読む:

  • :help mapを参照してください Vimリファレンスマニュアル

F1 を除いて、Vimではファンクションキーはすべて無料です。 、これは助けになるはずです。私は助けを必要としない、それは私がすでに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

航空会社のプラグイン

Vimの航空会社のプラグインを忘れてはいけません。 Fedoraの2つのうち、これは軽量で、外部の依存関係は必要なく、すべてのフォントですぐに使用できます。あなたはそれをカスタマイズすることができます、そしてテーマとそのようなものがあります。たまたまデフォルト設定が気に入っています。

2つの主要なctagがあることに言及する必要があります プロジェクト:あふれんばかりのCtagsとユニバーサルCtags。後者はより現代的なフォークです。ディストリビューションにそれがある場合は、それを使用してください。 Fedora 35以降を使用している場合は、現在UniversalCtagsを使用していることを知っておく必要があります。

まとめ

まとめとして、これが私が提案することです。 Vimの設定を滑らかでクリーンに保つようにしてください。それは将来的に報われるでしょう。切り替えた後、:Wqと入力していたため、「writeandquit」コマンドを再学習する必要がありました。 偶然にいつも、そして私は実際に私が意図したことをした古い構成で「ハック」をしました。さて、これは実際に役立つかもしれませんし、カットをするかもしれません—私が意味することをあなたが理解することを願っています:

: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

この記事をレビューしてくれたMarcDeopとMelanieCorrに特に感謝します。


更新: 私は生き残りました!私が抱えていた唯一の苦労は、CtrlPプラグインとは結果の順序が異なることでした。ファイルのファジーアルゴリズムは、fzf.vimとは異なります。 プラグインなので、さまざまな検索用語を使用して検索していたファイルが機能しなくなりました。最終的にFedoraからfzfパッケージをインストールしました。これには、より関連性の高いファイル検索のためにリーダーの組み合わせにバインドできるvim関数FZFが付属しています。 GitHubリポジトリで更新された構成ファイルを参照してください。その過程で多くのことを学びました。多くのプラグインのおかげで、私がすでに忘れていたキーバインディングがあります。


この記事は元々著者のウェブサイトに掲載されており、許可を得て再公開されています。


Linux
  1. ViMテキストエディタ101ガイド

  2. Cowsay:Linux ターミナルで楽しむ

  3. vimでpylintを使用する方法

  1. Syntax_highlight | Lpr?

  2. Vimラテックス:Quickfixを無効にしますか?

  3. Vimをインストールできませんか?

  1. ViをVimに置き換えますか?

  2. Ubuntu 19.04 :vim を構成する

  3. Centos 7:vim を構成する