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