Re: [vim ] 把游標位置上的「字」寫出去給外部程式?
1. '<,'>{cmd}
我測試過用write,yank,外部命令輸出,都是整行,不是你的需求。
2. <cWORD> 用法如下:
: !echo <cWORD> #輸出游標下的word
這是作為commnd argument,不是你的stdin需求
3. system() 用法如下
:echo system( "cat ", "stdin's something....." )
system()執行命令,並且把第二個參數作為stdin輸入給命令。回傳stdout輸出。
如果用call system(..) 則看不到command 的stdout結果。
所以你可以用
map <c-j> :echo system( "命令" , expand("<cWORD>") )<cr>
來使用stdin。
參考:
:help :execute
:help <cWORD>
:help system()
stackoverlflow: How do I send the current buffer or line as stdin to system() in vim?
https://stackoverflow.com/q/21530456/12506676
※ 引述《cuello (cuello)》之銘言:
: Hi,
: 我在 .vimrc 裡這麼做
: map <C-j> :.,/^[ \t]*$/ w !<外部程式><CR><CR>
: 就是定義 [Ctrl]-[J] 把 buffer 遊標所在那一行開始往後
: 把整段(直到碰到空行),寫出去給外部的程式,
: 這個程式則由 stdin 讀入,接手處裡這幾行。
: 但是,我有進一步的需求,就是以上的方式是以行為單位,
: 問題是,可不可能只寫出去遊標所在的「那一個字」
: 「那一個字」可以是 "W/B" 或是 "w/b" 的「大字」或「小字」
: 我想過,例如,再編輯模式: B"ayW
: 可以把那個我要的「字」存到 named register a 去
: 但是,我不曉得要怎樣才能在 .vimrc 把 "a 像上面那樣
: 寫出去給一個外部程式
: 請問這可以辦到嗎?
: 感謝指點迷津!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.141.196 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Editor/M.1627048467.A.CA2.html
※ 編輯: siuoly (219.85.141.196 臺灣), 07/23/2021 22:05:48
※ 編輯: siuoly (219.85.141.196 臺灣), 07/23/2021 22:09:09
推
07/24 01:46,
3年前
, 1F
07/24 01:46, 1F
推
07/24 01:53,
3年前
, 2F
07/24 01:53, 2F
→
07/24 01:53,
3年前
, 3F
07/24 01:53, 3F
→
07/24 01:53,
3年前
, 4F
07/24 01:53, 4F
→
07/24 01:53,
3年前
, 5F
07/24 01:53, 5F
推
07/24 01:56,
3年前
, 6F
07/24 01:56, 6F
→
07/24 01:57,
3年前
, 7F
07/24 01:57, 7F
推
07/24 20:47,
3年前
, 8F
07/24 20:47, 8F
→
07/24 20:49,
3年前
, 9F
07/24 20:49, 9F
推
07/24 20:52,
3年前
, 10F
07/24 20:52, 10F
→
07/24 20:53,
3年前
, 11F
07/24 20:53, 11F
推
07/24 21:13,
3年前
, 12F
07/24 21:13, 12F
→
07/25 01:21,
3年前
, 13F
07/25 01:21, 13F
→
07/25 01:23,
3年前
, 14F
07/25 01:23, 14F
→
07/25 01:26,
3年前
, 15F
07/25 01:26, 15F
→
07/25 01:27,
3年前
, 16F
07/25 01:27, 16F
→
07/25 01:27,
3年前
, 17F
07/25 01:27, 17F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Editor 近期熱門文章
PTT數位生活區 即時熱門文章