vim
生産性向上のためのヒント
サーチ…
構文
- :relativenumberを設定する
- :セット番号
- :set nonumber /:set nonu
- :pwd
備考
この自動リロードは、 autocmd
をサポートするvimのフルバージョンのvimrc
を編集する場合にのみ発生します。
クイック "使い捨て"マクロ
これをあなたのvimrcに追加してください:
nnoremap Q @q
"使い捨て"マクロの記録を開始するには、 qq
使います。録音を終了するには、 q
打ちます(両方のノーマルモードで)。
記録されたマクロを実行するには、 Q
使用します。
これは行内で何回も繰り返す必要があるが、後で再び使用する可能性のないマクロに便利です。
Vimの内部でパス補完機能を使う
これは非常に一般的です。ファイルやフォルダへのパスを覚えていて、Vimを開いて覚えたことを書き込もうとしますが、それが正しいと100%確信していないので、エディタを閉じてやり直してください。
パス補完機能が必要で、 /home/ubuntu/my_folder/my_file
というファイルがあり、前のパスを参照している別のファイルを編集しているときは、
挿入モードにする:あなたが望むように挿入するか、それともするか。次に、 /h
と書いてください。カーソルがh
下にあるときは、 Ctrl + x キーを押しながらCtrl + f キーを押すと、パターン/h
が一意であるため、エディタは/home/
に入力します。
今、 /home/ubuntu/
my_folder_1
my_folder_2
という2つのフォルダがあるとします
あなたは/home/ubuntu/my_folder_2
パスが必要です
いつものように:
挿入モードにする
write /h
と入力し、Ctrl xを押してからCtrl fを押します。今度は/home/
Next /home/
uの後にuを追加し、 Ctrl xを押してからCtrl fを押します。今、 /home/ubuntu/
はそのパスが一意であるためです。今度は、 /home/ubuntu/
後ろに書いmy
Ctrl xとCtrl fを押してください。エディタはmy_folder_
まで単語を完成させ、ディレクトリツリーを表示するので、矢印キーを使用して目的のものを選択します。
相対線番号をオンにする
削除する行の正確な数がわからないときにいくつかの行の行を削除するには、すべての行を削除するまで10dd
、 5dd
、 3dd
を試してください。
相対的な行番号はこの問題を解決します。
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
NORMALモードにする: Esc
さて、実行:set relativenumber
。完了すると、ファイルは次のように表示されます。
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
0
は現在の行の行番号で、実際の行番号も相対番号の前に表示されるので、現在の行から行の数を見積もったり、削除したり、数を減らしたりする必要はありません一つ。
6dd
ような通常のコマンドを実行できるようになり、行数が分かります。
また、同じコマンドの短い形式を使用することができます:set rnu
相対数とをオンに:set nornu
同じをオフにします。
あなたが:set number
またはhave :set number
すでにオンにしている場合は、カーソルがある行の行番号を取得します。
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
行番号の表示
既定のビューから行番号を表示するには
:set number
行番号を非表示にするには
:set nonumber
上記のショートカットもあります。 nu
はnumber
と同じです。
:set nonu
行番号を非表示にするには、
:set nu!
挿入モードを終了するためのマッピング
多くのVimユーザーは、 Escの到達が難しく、家の行から簡単にアクセスできる別のマッピングを見つけることになります。 Ctrl - [英語のキーボードのEscと同じで、手が届きやすいです。
j k
inoremap jk <ESC>
これは本当に簡単にトリガすることができます。あなたの最初の2本の指をホームラインに同時に叩くだけです。 「jk」は英語の単語には決して出現しないので、誤って起動することも難しく、通常モードであれば何もしません。 「ブラックジャック」をあまり入力しない場合は、 inoremap kj <ESC>
追加して、2つのキーのタイミングについて心配する必要はありません。
キャップスロック
Linux
Linuxでは、 xmodmap
を使ってCaps LockをEscと同じようにすることができます 。これをファイルに入れる:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
次に、 xmodmap file
実行しxmodmap file
。 Caps LockをEscに再設定します 。
Windows
Windowsでは、 SharpKeyまたはAutoHotkeyを使用できます。
マックOS
macOS 10.12.1以降をお持ちの場合は、システム環境設定を使用してCaps LockをEscapeに再マップすることができます。 [キーボード]を選択し、[キーボード]タブに移動し、[修飾キー]をクリックします。
編集しているファイルのディレクトリやパスを知る方法
あなたのファイルが入っているディレクトリのパスを知るには:
Escを押してコマンドモードに入る
:pwd
これはエディタの一番下にあるディレクトリへのパスを出力します。
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
これで、vimの作業ディレクトリに対して相対的に編集しているファイル名を知りたい場合は、以下を使用できます:
Escキーを押してコマンドモードに入ります。CTRL G
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
最後に、編集中のファイルへの絶対パスを取得するには、
Escを押してコマンドモードに入り、
1をクリックしてCTRL G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
機能ブロック内で検索する
カーソルを囲む{}
ブロック内のテキストfoo
を検索するには、次のコマンド( <ESC>
- エスケープキー、 <CR>
- Enterキー)を使用します。
vi{<ESC>/\%Vfoo<CR>
n
とp
押すと、ブロック内のマッチの間をジャンプできます。 hlsearch
オプションを有効にすると、すべての一致が強調表示されます。 \%V
は視覚的に選択された領域でのみ検索するようにvimに指示する特別な検索パターン部分です。次のようなマッピングを行うこともできます:
:vnoremap g/ <ESC>/\%V
この後、上記のコマンドは次のように短縮されます。
vi{g/foo<CR>
もう1つの便利な方法は、パターンを含むすべての行を印刷することです。
vi{
:'<,'>g/foo/#
'<,'>
範囲が自動的に挿入されます。
:help range
と:help :g
参照してください。
見つかった行のコピー、移動、または削除
多くのユーザーは、行のコピー、移動、削除をすばやく行い、元の場所に戻したいという状況に陥っています。
通常、現在の行の下に単語lot
を含む行を移動する場合は、次のように入力します。
/lot<Esc>dd<C-o>p
しかし、生産性を上げるために、以下のような場合にこのショートカットを使用することができます:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
だからこのような検索:
/lot$m
含まれている行移動するlot
カーソルが検索を開始したときにあった行の下に。
vimを起動する前に `sudo`を忘れた場合はファイルを書きます
このコマンドは、開いているファイルをsudoの権限で保存します
:w !sudo tee % >/dev/null
また、マップすることができますw!!
ルートとしてファイルを書き出す
:cnoremap w!! w !sudo tee % >/dev/null
保存時にvimrcを自動的にリロードする
保存時にvimrc
を自動的にリロードするには、以下をvimrc
追加してください:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
最後に、次のように入力します。
:so $MYVIMRC
次にvimrc
を保存すると、自動的にリロードされます。
vim-airlineを使用している場合は、 nested
が便利です。エアラインをロードするプロセスによってオートコマンドがトリガされますが、オートコマンドを実行しているのでスキップされます。 nested
れた自動コマンドをトリガし、航空会社が適切にロードできるようにします。
コマンドラインの完了
コマンドラインの補完候補を有効にするためにwildmenu
を設定します。
以下を実行する
set wildmenu
set wildmode=list:longest,full
今あなたが言うなら、 :color
tab 、
あなたは得るでしょう
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark