vimはテクニックでまとめやすいです.
5888 ワード
次号に続く
ルーフ:Escを使わないでください.
http://vim.wikia.com/wiki/Avoid_the_エスケープkey
モード移行コマンドモードを挿入します.Escの代わりに「ctrl+[]」または「ctrl+C」を使います.
http://www.slideshare.net/c9s/vim-script-programming
http://vim.wikia.com/wiki/Manipulate_quoted_strings
I think the easure st way to retrieve the char under cursor is:
You can use it like
****reading command output****
ctrl-n自動ヒント関連
c+++声明のvirtualなどの関数に対して、ctagsはデフォルトでは認識されていません.以下のパラメータが必要です.
vimrcに以下のコードを追加し、vimを再起動するとTABで4つのスペースが発生することができます.
:.,+2 s/^/\/////////// 現在の行から後の2行の先頭に//を足すと、意味が変わります.
:.,+2 s落^22163;// ((zhi)をセパレータとして使用すると、転送処理は不要です.
または:
ctrl-vで可視化し、jまたはctrl-dを使って下の行を選択し、大文字Iで可視化ブロックの先頭に挿入し、Escを押す.
**大小書き**
V、または(V、ctrl-v)で可視化し、選択を移動します.
ググが小文字になる
gUが大文字になります
****マクロの記録****
q a、操作シーケンス、q、@a、@qaからマクロ録画を開始し、qはマクロ録画を終了し、操作記録はレジスタaにあります.そこで@aは録画されたマクロを再生します.@@はショートカットキーを使って、最新のrelayを行うマクロです.
行番号をつける:
方法1>
1行目の先頭に「1.」を入力し、Escでコマンドモードに切り替えます.
qa ctrl-v f.y j P ctrl-a 0 q(中間にスペースがないので、ctrl-aは整数を1つ足すことを示しています.)
@a
100@@
方法2>
コマンドモードで、入力
:g/^/exec“s/^/”.str part(ライン(.).“”,0,4)
***指定行を削除***
特定の文字を含む行を削除します.g/pattern/d (グローバル削除マッチ行)指定された文字が含まれていない行を削除します.:v/pattern/d:g!/pattern/d
偶数行を削除:%s/\(^.*)^.*/\1/g奇数行を削除:%s/^.*(^.*)/\1/g
正規表現:任意の文字にマッチします.(改行を除く)0回以上繰り返します.または複数の前の文字*マッチングセットの任意の文字[...]は、セット内の任意の文字にマッチします.行の先頭、行末^にマッチします.語尾、正規表現のグループ\(...)第1グループの内容\1
****は自動的にインデントされます.
ブロックを選択すると、下記のインデント操作ができます.
J→すべての行を連結する(1行になる)<>→左右インデント=→自動インデント
デフォルトは8つのスペース(shiftwidth=8)でインデントされます.したがって、vimrcでは以下のように設定できます.
set tabstop=4 set cindent shiftwidth=4
**コードの折りたたみ**
コードブロックの括弧上で、たとえば{、実行:
zf%でコードを折りたたみ、zoを再展開し、すべてのzOを展開します.
***バイナリ***を編集します.
vim-b filenameを使ってファイルfilenameを開きます.
:set display=uhexは16進数の値を表示します.
または、外部xxdプログラムを呼び出します.
:%!xd 16進数に変換
:%!xxd-r回復
***コピー貼り付け***
ルーフ:Escを使わないでください.
http://vim.wikia.com/wiki/Avoid_the_エスケープkey
モード移行コマンドモードを挿入します.Escの代わりに「ctrl+[]」または「ctrl+C」を使います.
http://www.slideshare.net/c9s/vim-script-programming
http://vim.wikia.com/wiki/Manipulate_quoted_strings
" If the cursor is in the middle of a quote block when is pressed
" a quote is added to the end of the line followed by a plus, a
" and another quote.
function! Quotereturn()
let before=strpart(getline(line(".")), 0, col(".")-1)
"let after=strpart(getline(line(".")), col("."))
if(before =~ '^\([^"]*"\([^"\\]\|\\.\)*"\)*[^"]*"\([^"\\]\|\\.\)*$')
return "\"+\"\\\"
else
return "\"
endif
endf
inoremap =Quotereturn()
" If you backspace over a quote and it's a continuation fromanother line
" the two strings will be concatenated with quotes, spaces, and + removed.
function! Quotebackspace()
if( (strpart(getline(line(".")), 0, col(".")-1) =~ '^\s*"$') && (getline(line(".")-1) =~ "\"+$") )
return "\d0kgJhhxxxi"
else
return "\"
endif
endf
inoremap =Quotebackspace()
http://stackoverflow.com/questions/7560911/vim-do-something-in-a-function-based-on-character-under-a-cursor I think the easure st way to retrieve the char under cursor is:
getline(".")[col(".")-1]
Alternative ely,you can do it with strpart()
strpart(getline("."), col(".")-1, 1)
The first expression first cals the function getline()
passing "."
as argment which means the line where the cursor is positiond will be returned.The n we use the so caled expr 8 or expr-[] (see the) help)to retrieve a single character.The number passed compes from another function、 col()
which returns the current cursor column.As indexs start in 0,one is subtraced.You can use it like
if getline(".")[col(".")-1] == '*'
...
***bang!*******reading command output****
:r filename
:r ! ls
****ctags+include自動完成***ctrl-n自動ヒント関連
c+++声明のvirtualなどの関数に対して、ctagsはデフォルトでは認識されていません.以下のパラメータが必要です.
ctags --c-kinds=+p -R
****ゾーン検索****ctrl-v
Esc /\%Vkeyword
****vimでは、ctagsは分割ウィンドウを使って開けます.ctrl-w, ctrl-] Open the definition in a horizontal split
***TABとスペース置換**を設定します.vimrcに以下のコードを追加し、vimを再起動するとTABで4つのスペースが発生することができます.
set ts=4 ( :ts tabstop , TAB 4 )
set expandtab
保存されたファイルに対して、スペースとTABの置換は以下の方法で行うことができます.TABはスペースに置換されます.:set ts=4
:set expandtab
:%retab!
スペースをTABに置換::set ts=4
:set noexpandtab
:%retab!
****vim編集挿入コメント****:.,+2 s/^/\/////////// 現在の行から後の2行の先頭に//を足すと、意味が変わります.
:.,+2 s落^22163;// ((zhi)をセパレータとして使用すると、転送処理は不要です.
または:
ctrl-vで可視化し、jまたはctrl-dを使って下の行を選択し、大文字Iで可視化ブロックの先頭に挿入し、Escを押す.
**大小書き**
V、または(V、ctrl-v)で可視化し、選択を移動します.
ググが小文字になる
gUが大文字になります
****マクロの記録****
q a、操作シーケンス、q、@a、@qaからマクロ録画を開始し、qはマクロ録画を終了し、操作記録はレジスタaにあります.そこで@aは録画されたマクロを再生します.@@はショートカットキーを使って、最新のrelayを行うマクロです.
行番号をつける:
方法1>
1行目の先頭に「1.」を入力し、Escでコマンドモードに切り替えます.
qa ctrl-v f.y j P ctrl-a 0 q(中間にスペースがないので、ctrl-aは整数を1つ足すことを示しています.)
@a
100@@
方法2>
コマンドモードで、入力
:g/^/exec“s/^/”.str part(ライン(.).“”,0,4)
***指定行を削除***
特定の文字を含む行を削除します.g/pattern/d (グローバル削除マッチ行)指定された文字が含まれていない行を削除します.:v/pattern/d:g!/pattern/d
偶数行を削除:%s/\(^.*)^.*/\1/g奇数行を削除:%s/^.*(^.*)/\1/g
正規表現:任意の文字にマッチします.(改行を除く)0回以上繰り返します.または複数の前の文字*マッチングセットの任意の文字[...]は、セット内の任意の文字にマッチします.行の先頭、行末^にマッチします.語尾、正規表現のグループ\(...)第1グループの内容\1
****は自動的にインデントされます.
ブロックを選択すると、下記のインデント操作ができます.
J→すべての行を連結する(1行になる)<>→左右インデント=→自動インデント
デフォルトは8つのスペース(shiftwidth=8)でインデントされます.したがって、vimrcでは以下のように設定できます.
set tabstop=4 set cindent shiftwidth=4
**コードの折りたたみ**
コードブロックの括弧上で、たとえば{、実行:
zf%でコードを折りたたみ、zoを再展開し、すべてのzOを展開します.
***バイナリ***を編集します.
vim-b filenameを使ってファイルfilenameを開きます.
:set display=uhexは16進数の値を表示します.
または、外部xxdプログラムを呼び出します.
:%!xd 16進数に変換
:%!xxd-r回復
***コピー貼り付け***
~/.vimrc,
set pastetoggle=
F5
"+ , ,ubuntu vi ,
$ sudo apt-get install vim-gnome
**** 、 で
~/.vimrcに えてset hls
set background=dark “black background, use dark, default use light
, dard ,
,
:noh
or
:nohlsearch
したら、またハイライトします.
set ignorecase set smart case
abcの は、 と に ではありません.
Abcの 、 です
/abc\C、 にabcにのみマッチします.
****map****
マッピング、 なプレフィックスはありますか? ノアは でないことを し、デフォルトで する. n モードで とすることを します. v はテレビモードで です. i モードで とすることを す. cコマンドラインモードで になることを します.
よくある:nnoremapはn+nore+mapを します.
**mapleader****
マップを
let mapleader=','nnoremap t:tabe
コマンドモードで「t」を すると、タブページが きます.
**VIMでは、DOS/Windowsファイルの をどうやって しますか? ***
1:1.vim hello.c (edit the file hello.c)2.press the key: Esc 3.enter this string: %s/^M/g (^M=Ctrl v+Ctrl m)4.press the key:enter (the^M cleared!)5.:wq(save the file) 2: コマンド: dos 2 unix ハロー.
**ステータスバーに が されます. ***
「Always show the statusライン
set laststatus=2
Format the status line
set statusline=%{HasPaste()}%F%m%r%h\%w\CWD:\%r%{getcwd()}%h\Line:\Col:\%c