LoginSignup
1
2

More than 5 years have passed since last update.

【Vim】シェルの実行結果を行としてではなく現在のカーソル位置に挿入する

Last updated at Posted at 2017-12-22

例えば:read !dateなどと打つと、dateの結果を挿入することができるけど、行で出力されてしまうので、カーソルの右側に出力したいという用途には使えない。

挿入モードやコマンドラインモードで<C-r>=を使うと現在のカーソル位置にVim scriptの結果が挿入されるので、<C-r>=を打った後、system('date')と打つとやりたいことが大体できるが、最後の改行が入ってしまうのと、system('')を打つのがめんどい。

そこで、<C-r>!<command><command>の実行結果から最後の改行を取り除いたものをカーソル位置に挿入できるようにした。

inoremap <expr> <C-r>! <SID>system()
cnoremap <expr> <C-r>! <SID>system()

function! s:system()
  let command = input("!", '', 'shellcmd')
  return substitute(system(command), '\n\+$', '', '')
endfunction

上記をvimrcに書いて

わたしは<C-r>!whoami<CR>です。

と打つと

わたしはtmsanrinshaです。

となる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2