vimのプロジェクト機能を使っている。左がファイルのリストが並んで、右がそのファイルの内容が表示されている。左のファイルの一覧でカーソルの移動コマンドのj,kを使って
1. リターンで右の画面に内容を表示してまた、その後に左の画面に移動させる。
2. ①以外の方法としてはmap leaderの¥で\vで右の画面に表示させる。これは、左の画面に移動させる必要は無い。
上記の操作をスクリプトで実行させたい。然し、エラーになって実行が出来ない。
normalコマンドでkを打鍵して、その後に<return>を打鍵したい。これをvim scriptでどの様に書いたら良いのだろうか。下記はエラーになる。
exec "normal k<cr>"
exec "normal k<return>"
exec "normal k".<cr>
exec "normal k".<return>
また、ここではmap leaderが"\"になっているのでnormalコマンドでは、\vでも同様の事は出来るがこのleaderを使ってのexecのnormalコマンドのvim scriptの書き方が分からない。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
>\\を<leader>にしても\<leader>にしてもエラーには成りませんが左の
>ファイル一覧にder>が表示されて動きません。
<leader>はmapでしか使用できないようです。
exec "normal ... で<leader>を使用すると上記の結果になります。
こちらでも、text.vimの動作を確認しましたが、期待される動作してます。
vimのバージョンの違いかプラットフォームの違いでしょうか?
ちなみに、テストした環境はFedora 16です。
No.4
- 回答日時:
exec "normal" "k" . "\\" . "v"
有難う御座います。
下記のエラーメッセージが出ます。
引用符が有りません。エラー"v"
一応、初期の計画をしていた物は出来ていますので。
ここで締め切らせていただきます。
何かしっくりとは来ませんが。有難う御座いました。
No.2
- 回答日時:
私の環境では「exec "normal j\\v"」で期待された(j \vを入力したかのような)動作します。
ちなみに、vimのバージョンは7.3.515です。
有難う御座います。
vimのバージョンは、7.4.475です。
j\\vとかk\\vとかすると、functionの中でエラーになります。
なので、今は別の方法でtry catch文でスルーしています。
今分からないのはその部分だけです。多分、leaderの指定に問題が有るのではと思っているのですが。???
nmap <buffer> <silent> <right> :call Down()<cr>
nmap <buffer> <silent> <left> :call Up()<cr>
function! Up()
if bufname("%")== "project.txt"
exec "normal k\\v"
" try
" exec "normal k\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction
function! Down()
if bufname("%")== "project.txt"
exec "normal j\\v"
"try
" exec "normal j\<CR>"
"catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
"endtry
endif
endfunction
有難う御座います。
map <leader>K :normal j<cr>
\Kでjを打ったのと同じ。
上記の部分は意味は分かりませんが。全く違います。
vimでコマンドモードで:Project project.txtでProjectモードにしま
す。この時に左はファイルの一覧リストが右側には、その内容が表示さ
れます。
この時に左側でj\vは、下に移動してそのファイルの内容が表示されま
す。同様にk\vは、上に移動してそのファイルの内容を表示します。こ
の時のカーソルは左のファイル一覧の位置にあります。
現在は、\vの動作が出来ませんのでその代わりとして、<Return>して
カーソルを右に移動して内容を表示して。その後に苦肉の策として
<C-W>hとしてカーソルを左に移動しています。
本来は\vだけで良いのですが。\vの動作をvim scriptでコーディング出
来ません。異なる動作をします。その為に、現在は下記で代用していま
す。
k\vを下記でシュミレート
exec "normal k\<CR>"
exec "normal \<C-W>h"
j\vを下記でシュミレート
exec "normal j\<CR>"
exec "normal \<C-W>h"
どうしてもこの\をexec "normal ..."の中にいれる事が出来ない。これ
が今問題です。
最初はシュミレートの方法でも分からなかったと言う事で二つの質問を
出しましたが。シュミレートの方法は分かりましたので。残りの一つの
map leaderのnormal コマンドの記述のみが分からない状況です。唯、
運用しては、今は問題無く動いているので支障は無いのですが。
将来的にどうしてもこの機能が無いと使えなくなった場合を考えればこ
の問題は今のうちに解決をしたいと思って投稿しました。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vlan internal allocation poli...
-
YAHAMA RTXシリーズのコマンド...
-
teratarmでコマンド入力すると...
-
WindowsからSSHでサーバーにあ...
-
バッチファイルでファイル移動...
-
IBMメインフレームのFTP 文字コ...
-
CPコマンドでファイルがコピー...
-
バッチファイルの変数引継ぎに...
-
SVNでの最新のリビジョン番号取...
-
NETBIOSドメイン名の変更について
-
一定時間経過させるコマンドは?
-
nslookupを5分おきに実行するバ...
-
expectでコマンド実行結果を変...
-
Solarisでのgrepについて
-
vim script でnormalコマンドの...
-
Ciscoルーター 対向機器のIPア...
-
エクセルでファイルの最終更新...
-
沢山のフォルダにあるファイル...
-
TXTファイルを上書き保存する前...
-
Excel VBAで作成したマクロをxl...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vlan internal allocation poli...
-
teratarmでコマンド入力すると...
-
YAHAMA RTXシリーズのコマンド...
-
WindowsからSSHでサーバーにあ...
-
Ciscoルーター 対向機器のIPア...
-
バッチファイルでファイル移動...
-
NETBIOSドメイン名の変更について
-
CPコマンドでファイルがコピー...
-
IBMメインフレームのFTP 文字コ...
-
expectでコマンド実行結果を変...
-
linuxのmailコマンドの文字化け...
-
Solarisでのgrepについて
-
nslookupを5分おきに実行するバ...
-
WindowsUpdate KB2823324
-
ファイルを閉じるコマンドを教...
-
FTPサイト上で圧縮ファイルを解...
-
バッチファイルの変数引継ぎに...
-
HP-UXのlsコマンドで日時書式を...
-
【ネットワーク】ACLのシーケン...
-
Windows UPDateのサイトのIPア...
おすすめ情報
質問は二つあってその内の一つのmap leaderを使わないnormalコマンドの書き方に付いては分かりました。これに付いては、<cr>とか<return>では無くて\<CR>とすれば良いです。但し、後一つのmap leaderを使ってのnormalコマンドのvim scriptの記述が分かりません。
宜しく、お願いします。
ソースは下記です。ftpluginのtext.vimです。
exec "normal k\\v"
exec "normal j\\v"
上記はエラーになります。現在はこの部分をコメントにしています。そ
れで、今コメントしている所をコメントアウトして動かしています。
\\を<leader>にしても\<leader>にしてもエラーには成りませんが左の
ファイル一覧にder>が表示されて動きません。
何が問題なのか分かりません。
" Vim filetype plugin
" Language: Text
" Maintainer: David Barnett <daviebdawg+vim@gmail.com>
" Last Change: 2014 Jul 09
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = 'setlocal comments< commentstring<'
" We intentionally don't set formatoptions-=t since text should wrap as text.
" Pseudo comment leaders to indent bulleted lists.
etlocal comments=fb:-,fb:*
setlocal commentstring=
nmap <buffer> <silent> <right> :call Down()<cr>
nmap <buffer> <silent> <left> :call Up()<cr>
function! Up()
if bufname("%")== "project.txt"
exec "normal k\\v"
" try
" exec "normal k\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction
function! Down()
if bufname("%")== "project.txt"
exec "normal j\\v"
" try
" exec "normal j\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction