
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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- UNIX・Linux ブレース展開の使い方での質問です 2 2023/07/15 16:06
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Windows 10 win10 立ち上げ時のエラー 1 2023/04/17 11:55
- その他(Microsoft Office) エクセルでの作成データをモニター画面内に収めたい。 1 2022/04/23 11:52
- その他(ソフトウェア) IrfanView で画像のスクロール?できますか 1 2022/08/31 13:57
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ciscoのコマンド
-
コマンド入力だと動くけど、cro...
-
コマンドプロンプトでテキスト...
-
WindowsNT4.0ワークステーショ...
-
サーバアクセスに時間がかかる...
-
Access2003のコマンドボタンか...
-
vlan internal allocation poli...
-
WindowsUpdate KB2823324
-
WindowsからSSHでサーバーにあ...
-
Ciscoルーター 対向機器のIPア...
-
外付けHDD(ラシー)にバックアッ...
-
日本語化したいソフトがあるの...
-
SDから消えたファイルは、PC内...
-
(mobileme) iDiskがいまいち分...
-
caclsとは?
-
ホームページ作成ソフト
-
誤ってデータをごみ箱にいれて...
-
Cドライブを開こうとすると、「...
-
VBA メモ帳の上書き保存がしたい
-
Acronis True Imageと外部HDD
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vlan internal allocation poli...
-
WindowsからSSHでサーバーにあ...
-
teratarmでコマンド入力すると...
-
YAHAMA RTXシリーズのコマンド...
-
バッチファイルでファイル移動...
-
CPコマンドでファイルがコピー...
-
IBMメインフレームのFTP 文字コ...
-
NETBIOSドメイン名の変更について
-
Ciscoルーター 対向機器のIPア...
-
nslookupを5分おきに実行するバ...
-
expectでコマンド実行結果を変...
-
Tera Term マクロのexac について
-
linuxのmailコマンドの文字化け...
-
バッチファイルの変数引継ぎに...
-
FTPサイト上で圧縮ファイルを解...
-
Solarisでのgrepについて
-
アナログモデム送出レベル調整
-
NASからNASへの自動バックアッ...
-
HP-UXのlsコマンドで日時書式を...
-
windows7でbootsectが使えない
おすすめ情報
質問は二つあってその内の一つの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